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/2
和end_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_config
和skip_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/2
和end_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_timeout
。init_per_testcase/2
并end_per_testcase/2
包含在时间间隔内。一个TimeFunc
函数可用于返回一个设置新的timetrap
TimeVal
。它也可以用来触发时间限制超时,在某些时候,返回的值不是a TimeVal
。有关详细信息,请参阅Timetrap Time-Outs
用户指南中的部分。
标记require
指定测试用例(或init_per_testcase/2
或end_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/2
STDLIB(或?config
定义的宏ct.hrl
)读取列表中的元素。
如果您决定不运行测试用例,请返回{skip,Reason}
。Reason
然后在Comment
HTML结果页上的字段中打印。
要Comment
在HTML结果页面的字段中打印一些信息,请返回{comment,Comment}
。
如果该函数返回其他任何内容,则测试用例被认为是成功的。返回值始终打印在测试用例日志文件中。
有关测试用例实现的详细信息,请参见Test Cases
用户指南中的一节。
有关信息save_config
和skip_and_save
,请参见Saving Configuration Data
用户指南中。