这是一个通用的功能测试框架。
testharness的Python项目详细描述
=====
测试线束自述
=====
:作者:oisin mulvihill
。内容:
简介
==
这是一个通用的功能测试框架。
这是一个基于python控制台的简单脚本系统,用于从测试模块加载和运行命令。测试模块是python类,实现了如何测试项目或
程序的细节。该模块提供了一组可以从脚本调用的简单函数。例如,函数
可以处理启动某些服务或在数据库中实际设置/获取某些
值的复杂性。在脚本中,可以断言每个函数调用来测试返回的内容。这是用来通过或不通过测试的。
我主要使用它来实现用户接受故事来验证某个用户功能的行为。我不使用它来测试网页,因为这里有更好的东西(我使用硒遥控器)。
我最初在2001年开发了这个项目,我用它测试了一些商业产品,我的公司和其他人已经开发了这些产品。我在不同的地方有这个项目的几个版本。我已经
是时候把它们放在一起了。这也是一个练习,用于学习如何使用setuptools编写
包。
运行测试线束
下面的
说明仅适用于这种情况。
*将文件/lib/testharness/config/tester.ini.in复制到./tester.inilog.ini(如果需要)。
*从命令行发出以下命令以运行测试线束。tester.ini中提到的所有测试现在将相继运行。::
>命令行参数
=命令行参数。
-c,--config<;config_file>;
此
文件是必需的,如果未指定,则在当前路径中查找文件"tester.ini"。
-l,--log config<;log懔config>;
----
此文件设置了日志
消息的位置等。默认情况下,测试线束在当前路径中查找名为
"log.in i"的文件。
-i,--交互式
----
而是进入互动模式。这允许
用户手动键入命令。
--test path<;path_to_tests>;
--------如果未指定,则测试线束将在当前路径中查找
"AcceptanceTests"目录。
tester.ini配置
----
此文件用于配置测试线束和加载了
的任何模块。如您所料,test harness部分包含测试线束使用的设置
。以下是典型的tester.ini::
[testharness]
assert_等于_failure_causes_exit=yes
tests=my_default_tests_to_run.script
testharness部分--——
assert-equals-u failure-u-causes-u exit
+++++++++++++++++++++如果这是"否",测试工具将尝试继续处理脚本。这里的"yes"值是默认值,"no"仅用于
调试,在正常情况下不建议使用。
tests
+++
这些文件名用空格分隔,并且都在同一行。目前您不能跨越多行。还要注意,测试工具希望在--test path<;path_to_tests>;目录中找到这些
文件。
test scripts
==
所有测试通常以\*.script开始。这只是我开始使用的一个约定。
可以根据需要调用文件。
test script和test harness console命令这些
函数可以从脚本文件或控制台调用。没有真正的区别。
load<;module name>;
----
这会将测试模块加载到测试线束中。测试工具模块是python
脚本文件,其中包含从testbase派生的类。当您指定
模块时,您没有指定".py"扩展名。
*注意*
>只有从testbase派生的类将被加载,其他所有的都将被忽略。
help[<;function name>;]
=--
test harness中的所有函数。
exit
----
这告诉测试harness在调用关闭后退出。
---
这只在脚本文件中真正有用。任何以此开头的行都将被忽略。
print<;string to be printed>;
----
此函数将一行
文本打印到stdout。
shutdown
--
此函数通常在测试线束退出之前调用。这个
函数遍历每个加载的模块并调用其start()方法。
start<;module name>;
----
>这个函数调用加载的模块start()方法。
stop<;module name>;
----
此函数调用加载的模块start()方法。
list
---
此函数列出测试线束中所有加载的模块。
inspect<;module name>;
----
此函数调用modules inspect()方法以打印可用的
函数调用列表。
注意:由module writer实际写入返回打印的
信息。
evaluate<;module name>;<;methodcall>;<;arg 1>;、<;arg 2>;、<;arg 3>;、…<;arg x>;
——通常这个函数不是由用户直接调用的。相反,任何不是内置函数的东西都被假定为模块方法调用。
例如:
"maintest"
函数有一个名为"domytest1"的方法,它有两个参数,一个数字
和一个字符串。
可以使用evaluate函数调用此函数,如下所示::
evaluate mytest.maintest domytest1 123,这是一个字符串
,但是以下操作也有效::
*notes*
o在它们之前或之后有空格,除非您希望
它将被传递给函数。
例如::
domytes 123,这是一个字符串,4321
domytes 123,这是一个字符串,4321,
domytest1将传递参数"123""这是一个字符串"和"4321"
domytest1将传递参数"123""这是一个字符串"和"4321"
assertequals<;失败时的错误消息>;,<;比较值>;
---------------------------
此函数将提供的<;比较值>;字符串与上次用户模块脚本调用返回的字符串进行比较。
例如::
此调用返回一个数字。此函数转换为字符串并由测试线束存储。现在可以使用assertequals测试返回,如下所示:
assertequals domytest1不工作,12
如果domytest1返回的值是12,则assertequals将通过。如果
domytest1未返回12,则将打印消息"domytest1未工作"。
*注意*
如果测试线束断言配置选项为"是",则失败的
assertequals调用将导致测试线束停止运行脚本,并返回一个失败代码。
测试线束自述
=====
:作者:oisin mulvihill
。内容:
简介
==
这是一个通用的功能测试框架。
这是一个基于python控制台的简单脚本系统,用于从测试模块加载和运行命令。测试模块是python类,实现了如何测试项目或
程序的细节。该模块提供了一组可以从脚本调用的简单函数。例如,函数
可以处理启动某些服务或在数据库中实际设置/获取某些
值的复杂性。在脚本中,可以断言每个函数调用来测试返回的内容。这是用来通过或不通过测试的。
我主要使用它来实现用户接受故事来验证某个用户功能的行为。我不使用它来测试网页,因为这里有更好的东西(我使用硒遥控器)。
我最初在2001年开发了这个项目,我用它测试了一些商业产品,我的公司和其他人已经开发了这些产品。我在不同的地方有这个项目的几个版本。我已经
是时候把它们放在一起了。这也是一个练习,用于学习如何使用setuptools编写
包。
运行测试线束
下面的
说明仅适用于这种情况。
*将文件/lib/testharness/config/tester.ini.in复制到./tester.inilog.ini(如果需要)。
*从命令行发出以下命令以运行测试线束。tester.ini中提到的所有测试现在将相继运行。::
>命令行参数
=命令行参数。
-c,--config<;config_file>;
此
文件是必需的,如果未指定,则在当前路径中查找文件"tester.ini"。
-l,--log config<;log懔config>;
----
此文件设置了日志
消息的位置等。默认情况下,测试线束在当前路径中查找名为
"log.in i"的文件。
-i,--交互式
----
而是进入互动模式。这允许
用户手动键入命令。
--test path<;path_to_tests>;
--------如果未指定,则测试线束将在当前路径中查找
"AcceptanceTests"目录。
tester.ini配置
----
此文件用于配置测试线束和加载了
的任何模块。如您所料,test harness部分包含测试线束使用的设置
。以下是典型的tester.ini::
[testharness]
assert_等于_failure_causes_exit=yes
tests=my_default_tests_to_run.script
testharness部分--——
assert-equals-u failure-u-causes-u exit
+++++++++++++++++++++如果这是"否",测试工具将尝试继续处理脚本。这里的"yes"值是默认值,"no"仅用于
调试,在正常情况下不建议使用。
tests
+++
这些文件名用空格分隔,并且都在同一行。目前您不能跨越多行。还要注意,测试工具希望在--test path<;path_to_tests>;目录中找到这些
文件。
test scripts
==
所有测试通常以\*.script开始。这只是我开始使用的一个约定。
可以根据需要调用文件。
test script和test harness console命令这些
函数可以从脚本文件或控制台调用。没有真正的区别。
load<;module name>;
----
这会将测试模块加载到测试线束中。测试工具模块是python
脚本文件,其中包含从testbase派生的类。当您指定
模块时,您没有指定".py"扩展名。
*注意*
>只有从testbase派生的类将被加载,其他所有的都将被忽略。
help[<;function name>;]
=--
test harness中的所有函数。
exit
----
这告诉测试harness在调用关闭后退出。
这只在脚本文件中真正有用。任何以此开头的行都将被忽略。
print<;string to be printed>;
----
此函数将一行
文本打印到stdout。
shutdown
--
此函数通常在测试线束退出之前调用。这个
函数遍历每个加载的模块并调用其start()方法。
start<;module name>;
----
>这个函数调用加载的模块start()方法。
stop<;module name>;
----
此函数调用加载的模块start()方法。
list
---
此函数列出测试线束中所有加载的模块。
inspect<;module name>;
----
此函数调用modules inspect()方法以打印可用的
函数调用列表。
注意:由module writer实际写入返回打印的
信息。
evaluate<;module name>;<;methodcall>;<;arg 1>;、<;arg 2>;、<;arg 3>;、…<;arg x>;
——通常这个函数不是由用户直接调用的。相反,任何不是内置函数的东西都被假定为模块方法调用。
例如:
"maintest"
函数有一个名为"domytest1"的方法,它有两个参数,一个数字
和一个字符串。
可以使用evaluate函数调用此函数,如下所示::
evaluate mytest.maintest domytest1 123,这是一个字符串
,但是以下操作也有效::
*notes*
o在它们之前或之后有空格,除非您希望
它将被传递给函数。
例如::
domytes 123,这是一个字符串,4321
domytes 123,这是一个字符串,4321,
domytest1将传递参数"123""这是一个字符串"和"4321"
domytest1将传递参数"123""这是一个字符串"和"4321"
assertequals<;失败时的错误消息>;,<;比较值>;
---------------------------
此函数将提供的<;比较值>;字符串与上次用户模块脚本调用返回的字符串进行比较。
例如::
此调用返回一个数字。此函数转换为字符串并由测试线束存储。现在可以使用assertequals测试返回,如下所示:
assertequals domytest1不工作,12
如果domytest1返回的值是12,则assertequals将通过。如果
domytest1未返回12,则将打印消息"domytest1未工作"。
*注意*
如果测试线束断言配置选项为"是",则失败的
assertequals调用将导致测试线束停止运行脚本,并返回一个失败代码。