signed

QiShunwang

“诚信为本、客户至上”

pytest:多线程并行和分布式执行;结合pytest-html生成测试报告

2021/1/28 12:38:20   来源:

一、假如项目中有测试用例1000条,一条测试用例执行需要一分钟,一个测试人员需要1000分钟才能完成一轮的回归测试。通常我们会用人力成本去换时间成本,加几个人一起执行,时间就会缩短,如果十个人一起执行只需要100分钟,这就是一种并行测试,分布式的场景。pytest-xdist是pytest分布式执行插件,可以多个CPU或主机执行,这款插件允许用户将测试并发执行(进程级并发),插件是动态动态决定测试用例执行顺序的,为了保证各个测试能在各个独立的线程 里正确的执行,应该保证测试用例的独立性(这也符合测试用例设计的最佳实践)。
安装

pip  install  pytest-xdist

多个CPU并行执行用例,需要在pytest后面添加  -n  参数,如果参数为auto,会自动检测系统的CPU数目.如果参数为数字,则指定运行测试的处理器进程

pytest  -n  auto

pytest  -n [num]

 

实例:

某个项目有200条测试用例,每条测试用例之间没有关联关系,互不影响,这200条测试用例需要在1小时之内完成,可以加个 -n  参数,使用多CPU并行测试

运行方法:

pytest  -n  4

进入到项目目录下,执行pytest可以将项目目录下所有测试用例识别出来并且运行,加上  -n  参数,可以指定4个CPU并发执行,大量的测试用例并发执行提速非常明显

二、测试报告通常在项目中尤为重要,报告可以体现测试人员的工作量,开发人员可以从测试报告中了解缺陷情况,因此测试报告在测试过程中的地位至关重要,测试报告为纠正软件存在的质量问题提供依据,为软件验收和交互打下基础,测试报告根据内容的侧重点可以分为版本测试报告和总结测试报告。执行完pytest测试用例,可以用pytest-html插件生成HTML格式的测试报告

安装:

pip  install  pytest-html

执行方法:

pytest  --html=path/to/html/report.html

结合pytest-xidist使用

pytest  -v  -s  -n  3  --html=report.html  --self-contained-html