这是一个通用的功能测试框架。

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调用将导致测试线束停止运行脚本,并返回一个失败代码。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ContentExchange设置请求属性   java Spark/Hdfs/Hdfsclient兼容性   java springcloudstreamkafka配置:instanceCount和instanceIndex   Java中web服务序列化日期   java用动态数据替换占位符   java git gc似乎覆盖了一个packfile,留下了一个打开的文件描述符,其中包含对“oldxxx.pack”的引用   为什么Apache项目对Java版本敏感?   java Anylogic帮助如何在导入的3dobject通过输送机上的多个“站”时更改其颜色?   JavaEclipseNeonM2E可以导入一个大型项目,但似乎不能自动解决依赖关系   java@FindBy搜索具有满足条件的子元素的元素   java如何将ActionEvent e与键绑定一起使用?   java转换以集中方式从外部库抛出的异常   java中用户文件/数据文件与系统/程序文件的区别   java使用变量字符串或字符作为对象名   字体使用Java图形操纵字符串中每个字符的形状   JavaFX图表移动数据   java RandomAccessFile:将所有项设置为相同的字节数?   java Google Play inapp Billing onPurchasesUpdated()错误响应代码1   java在不知道属性名和属性数的情况下处理json对象   java是否可以一次从HazelcastInstance(映射和列表)中删除所有数据?