执行测试¶
本节主要介绍如果批量执行所有的测试用例并生成对应的测试报告。
批量执行测试用例¶
当测试用例编写完成,大部分情况下,我们需要全量来执行我们的测试用例,这里我们就可以使用manage.py工具:
$ python manage.py runtest zootest.cat.feed
这种方式执行的所有输出都会打印到stdout。
指定测试报告类型¶
可以通过指定 -o xml将执行的结果输出到xml文件,命令行为:
$ python manage.py runtest -o xml zootest.cat.feed
执行完成后,可以看到当前目录下生成以下文件:
2016/02/03 08:59 450 zootest.cat.feed.FeedFishTest.xml
2016/02/03 08:59 420 zootest.cat.feed.FeedAppleTest.xml
2016/02/03 08:59 412 zootest.cat.feed.FeedAppleTest.xml
2016/02/03 08:59 709 TestReport.xml
2016/02/03 08:59 4,646 TestReport.xsl
2016/02/03 08:59 5,697 TestResult.xsl
直接双击TestReport.xml用浏览器打开就可以看到测试报告。
如果想要生成在线报告,可以指定-o online,比如:
$ python manage.py runtest -o online zootest.cat.feed
-o online在执行完成后,会发送报告邮件,默认是发给当前登录系统的用户,如果要自行指定,可以联合-n选项,例如:
$ python manage.py runtest -o online -n "guyingzhao;t_QTA;yboxrunner"
还可以通过--reporttype选项控制在线测试报告的类型,可以是任意的字符串,默认是“个人测试”,比如要生成一个性能报告:
$ python manage.py runtest -o online --reporttype 性能测试 zootest.cat.feed
执行后输出一个在线报告的链接,例如:
http://www.qta.com/report/9273512
也可以修改为流输出式的测试报告,这个就是不指定-o选项时,采取的方式,全部输出到stdout:
$ python manage.py runtest -o stream zootest.cat.feed
执行后输出:
Test Cases runs at:2016-02-03 09:02:48.
filter 0 testcases
load 3 testcases
run test case: zootest.cat.feed.FeedFishTest(pass?:True)
run test case: zootest.cat.feed.FeedMouseTest(pass?:True)
run test case: zootest.cat.feed.FeedAppleTest(pass?:True)
Test Cases ends at:2016-02-03 09:02:48.
Total execution time is :0:00:00
并发执行¶
当测试比较多时,可以考虑通过并发的方式执行测试用例。testrunner内置两种并发方式:多线程和多进程。
使用多线程的方式并发:
$ python manage.py runtest -o stream -x threading -j 2 zootest.cat.feed
这里我们使用2个线程并发去执行全部用例。也可以使用多进程并发:
$ python manage.py runtest -o stream -x multiprocessing -j 2 zootest.cat.feed
指定测试用例¶
当只需要指定部分用例进行执行时,testrunner也支持选择过滤测试用例。
通过用例名指定测试用例,比如指定多个用例模块:
$ python manage.py runtest -o stream zootest.cat zootest.dog
测试用例名可以是一个包、模块或者类的名字,其参数TestLoader接受的参数是一样的。
也可以通过用例优先级过滤,比如只执行优先级为High和BVT的用例:
$ python manage.py runtest -o stream -p High/BVT zootest
也可以通过用例状态进行过滤,比如只执行Ready状态的用例:
$ python manage.py runtest -o stream -s Ready zootest
自定义测试执行¶
上面的执行都是通过manage.py来测试用例,如果需要扩展测试用例执行的过程,增加一些测试步骤,也可以通过QTA的接口来执行测试用例。
等价于上面的runtest命令的代码的实现:
from testbase.runner import TestRunner
from testbase.report import XMLTestReport
report = XMLTestReport()
runner = TestRunner(report)
runner.run("zootest.cat.feed")
如果要多线程执行:
runner = ThreadingTestRunner(report)
如果要使用Stream报告:
report = StreamTestReport()
通过使用不同类型的TestRunner和TestReport,可以定制测试执行的方式或测试报告的格式,更多的类型和使用方法,请参考接口文档《testbase.runner Package》和《testbase.report Package》