非常教程

Erlang 20参考手册

common_test

common_test

模块

common_test

模块摘要

用于对任何目标节点进行自动测试的框架。

描述

Common Test框架是用于实现和执行测试用例的自动和半自动执行的环境。

总之,Common Test支持:

  • 自动执行测试套件(测试用例集)
  • 在执行过程中记录事件
  • 测试套件结果的HTML表示
  • 测试套件代码的HTML表示
  • 测试套件作者的支持功能
  • 测试用例的逐步执行

以下部分描述Common Test在测试执行过程中调用的必需和可选测试套件函数。有关更多详细信息,请参阅Writing Test Suites用户指南中的部分。

测试用例回调函数

以下函数定义测试套件的回调接口。

出口

Module:all() -> Tests | {skip,Reason}

类型

强制性

返回要执行的测试套件模块中的所有测试用例和测试用例组的列表。此列表还指定案件和组的执行顺序Common Test。测试用例由一个原子表示,即测试用例函数的名称。测试用例组由一个group元组表示,其中GroupName,一个原子是该组的名称(定义在中groups/0)。也可以指定组的执行属性,既可以为顶级组也可以为其任何子组指定。此处指定的组执行属性会覆盖组定义中的属性(请参阅参考资料groups/0)。(使用值default,使用组定义属性)。

如果{skip,Reason}返回,则跳过该模块中的所有测试用例并Reason打印在HTML结果页上。

有关组的详细信息,请参阅Test Case Groups用户指南中的一节。

Module:groups() -> GroupDefs

类型

任选

定义测试用例组。有关详细信息,请参阅Test Case Groups用户指南中的部分。

Module:suite() -> [Info]

类型

任选

测试套件信息功能。返回标记元组列表,指定与此测试套件的执行相关的各种属性(对于套件中的所有测试用例都是通用的)。

标记timetrap设置允许每个测试用例执行的最大时间(包括init_per_testcase/2end_per_testcase/2)。如果超过时间限制,测试用例将失败并且有理由timetrap_timeout。一个TimeFunc函数可用于返回一个设置新的timetrap TimeVal。它也可以用来触发时间限制超时,在某些时候,返回的值不是a TimeVal。有关详细信息,请参阅Timetrap Time-Outs用户指南中的部分。

标记require指定套件中测试用例(或配置函数)所需的配置变量。如果在任何配置文件中找不到所需的配置变量,则会跳过所有测试用例。有关require功能的详细信息,请参阅功能ct:require/1,2

随着userdata,用户可以指定任何测试套件相关的信息,这些信息可以通过调用读取ct:userdata/2

标签ct_hooks指定Common Test Hooks和这套套房一起运行。

除了定义的元组之外,其他元组被忽略。

有关测试套件信息功能的详细信息,请参见Test Suite Information Function用户指南中的一节。

Module:init_per_suite(Config) -> NewConfig | {skip,Reason} | {skip_and_save,Reason,SaveConfig}

类型

可选的;如果定义了这个函数,那么end_per_suite/1也必须定义。

这个配置函数被称为套件中的第一个函数。它通常包含对套件中所有测试用例都通用的初始化,并且只能执行一次。参数Config是可以修改的配置数据。不管从这个函数返回的是什么,都被指定为Config套件中的所有配置函数和测试用例。

如果{skip,Reason}返回时,将跳过套件中的所有测试用例,Reason在套件的概述日志中打印。

有关信息save_configskip_and_save,请参见Saving Configuration Data用户指南中。

Module:end_per_suite(Config) -> term() | {save_config,SaveConfig}

类型

可选;如果定义了此函数,则init_per_suite/1也必须定义。

这个函数被称为套件中的最后一个测试用例。它意味着用于清理之后init_per_suite/1

有关信息save_config,请参阅Saving Configuration Data用户指南中的一节。

Module:group(GroupName) -> [Info]

类型

任选

测试用例组信息功能。它应该返回一个标签元组列表,列出与执行测试用例组(即其测试用例和子组)相关的各种属性。group/1使用与之前设置的键相同的键,通过覆盖属性设置属性suite/0

标记timetrap设置允许每个测试用例执行的最大时间(包括init_per_testcase/2end_per_testcase/2)。如果超过时间限制,测试用例将失败并且有理由timetrap_timeout。一个TimeFunc函数可用于返回一个设置新的timetrap TimeVal。它也可以用来触发时间限制超时,在某些时候,返回的值不是a TimeVal。有关详细信息,请参阅Timetrap Time-Outs用户指南中的部分。

标记require指定套件中测试用例(或配置函数)所需的配置变量。如果在任何配置文件中找不到所需的配置变量,则跳过此组中的所有测试用例。有关require功能的详细信息,请参阅功能ct:require/1,2

随着userdata,用户可以指定,可以通过调用读取任何测试用例组相关信息ct:userdata/2

标签ct_hooks指定Common Test Hooks和这套套房一起运行。

除了定义的元组之外,其他元组被忽略。

有关测试用例组信息功能的详细信息,请参见Group Information Function用户指南中的一节。

Module:init_per_group(GroupName, Config) -> NewConfig | {skip,Reason}

类型

可选的;如果定义了这个函数,那么end_per_group/2也必须定义。

在执行测试用例组之前调用此配置函数。它通常包含对组中所有测试用例和子组通用的初始化,并且只能执行一次。GroupName是组定义中指定的组的名称(请参阅参考资料groups/0)。参数Config是可以修改的配置数据。该函数的返回值是Config针对组中的所有测试用例和子组给出的。

如果{skip,Reason}返回,则跳过该组中的所有测试用例,并Reason打印在该组的概览日志中。

有关测试用例组的信息,请参阅Test Case Groups用户指南中的一节。

Module:end_per_group(GroupName, Config) -> term() | {return_group_result,Status}

类型

可选的; 如果定义了这个函数,那么init_per_group/2也必须定义。

这个函数在测试用例组执行完成后调用。它意味着用于清理之后init_per_group/2。嵌套子组的状态值可以返回{return_group_result,Status}。该状态可以在end_per_group/2以上级别的组中检索。状态还用于Common Test决定组的执行是在继续执行属性sequence还是repeat_until_*设置。

有关测试用例组的详细信息,请参见Test Case Groups用户指南中的一节。

Module:init_per_testcase(TestCase, Config) -> NewConfig | {fail,Reason} | {skip,Reason}

类型

可选;如果定义了此函数,则end_per_testcase/2也必须定义。

这个函数在每个测试用例之前被调用。参数TestCase是测试用例名称,Config(键值元组列表)是可以修改的配置数据。NewConfig从该函数返回的列表是Config针对测试用例给出的。如果返回,则测试用例被标记为失败而{fail,Reason}未被执行。

如果{skip,Reason},则跳过测试用例,Reason在套件的概述日志中打印。

Module:end_per_testcase(TestCase, Config) -> term() | {fail,Reason} | {save_config,SaveConfig}

类型

可选;如果定义了此函数,则init_per_testcase/2也必须定义。

这个函数在每个测试用例之后被调用,并且可以用于清理之后init_per_testcase/2和测试用例。任何返回值(除了{fail,Reason}{save_config,SaveConfig})都被忽略。通过返回{fail,Reason}TestCase被标记为错误(即使它返回值而不是终止)。

以获取有关以下方面的信息:save_config,见部分Saving Configuration Data在用户%27s指南中。

Module:Testcase() -> [Info]

类型

任选

测试用例信息功能。它应该返回一个标记元组的列表,这些元组指定与执行这个特定测试用例相关的各种属性。由Testcase/0覆盖属性设置的属性先前为group/1或者由测试用例设置suite/0

标记timetrap设置测试用例被允许执行的最大时间。如果超过时间限制,测试用例将失败并且有理由timetrap_timeoutinit_per_testcase/2end_per_testcase/2包含在时间间隔内。一个TimeFunc函数可用于返回一个设置新的timetrap TimeVal。它也可以用来触发时间限制超时,在某些时候,返回的值不是a TimeVal。有关详细信息,请参阅Timetrap Time-Outs用户指南中的部分。

标记require指定测试用例(或init_per_testcase/2end_per_testcase/2)所需的配置变量。如果在任何配置文件中找不到所需的配置变量,则会跳过测试用例。有关require功能的详细信息,请参阅功能ct:require/1,2

如果timetrap或未require设置,则使用由suite/0(或group/1)指定的默认值。

随着userdata,用户可以指定,可以通过调用读取任何测试用例相关的信息ct:userdata/3

除了定义的元组之外,其他元组被忽略。

有关测试用例信息功能的详细信息,请参阅Test Case Information Function用户指南中的一节。

Module:Testcase(Config) -> term() | {skip,Reason} | {comment,Comment} | {save_config,SaveConfig} | {skip_and_save,Reason,SaveConfig} | exit()

类型

强制性

测试用例的实现。调用函数来测试并检查结果。如果失败,请确保该函数导致运行时错误或调用ct:fail/1,2(这也会导致测试用例进程终止)。

Config例如,可以使用proplists:get_value/2STDLIB(或?config定义的宏ct.hrl)读取列表中的元素。

如果您决定不运行测试用例,请返回{skip,Reason}Reason然后在CommentHTML结果页上的字段中打印。

Comment在HTML结果页面的字段中打印一些信息,请返回{comment,Comment}

如果该函数返回其他任何内容,则测试用例被认为是成功的。返回值始终打印在测试用例日志文件中。

有关测试用例实现的详细信息,请参见Test Cases用户指南中的一节。

有关信息save_configskip_and_save,请参见Saving Configuration Data用户指南中。

common_test
1. Introduction (common_test) 详细
2. Common Test Basics 详细
3. Getting Started 详细
4. Installation 详细
5. Writing Test Suites 详细
6. Test Structure 详细
7. Examples and Templates 详细
8. Running Tests and Analyzing Results 详细
9. External Configuration Data 详细
10. Code Coverage Analysis 详细
11. Using Common Test for Large-Scale Testing 详细
12. Event Handling 详细
13. Dependencies between Test Cases and Suites 详细
14. Common Test Hooks 详细
15. Some Thoughts about Testing 详细
common_test 详细
ct 详细
ct_cover 详细
ct_ftp 详细
ct_hooks 详细
ct_master 详细
ct_netconfc 详细
ct_property_test 详细
ct_rpc 详细
ct_run 详细
ct_slave 详细
ct_snmp 详细
ct_ssh 详细
ct_telnet 详细
ct_testspec 详细
unix_telnet 详细