非常教程

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用户指南中。

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1