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

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@AfterEach注释在Spring测试中被忽略   散列如何使用bouncy castle在Java中创建SHA512摘要字符串?   java无法使用Okhttp获取响应cookie   100个数的java阶乘   多线程如何在Java中实现对象计数器   java我的精灵不显示背景   java如何在com上应用PanelSlideListener。索特里。滑动面板。SlidengUpPanelLayout SlideUp库   java如何在JDBC中使用WHERE EXISTS函数   java Swing:标签前景中的白色被绘制为黑色   获取java的时间戳。util。另一个java的日期对象为(10/7/14)。util。日期对象(2014年10月7日星期二11:21:00)   java如何在Spring/OpenJPA 1中重新创建用于更新行锁定的选择   java在保存另一个maven项目中的类时,有没有办法让eclipse识别对该类的更改?   java如何解决Spring中的Servlet上下文错误?   java在mongodb中删除记录   显示的java片段与当前片段重叠,而不是替换它