利用xdist实现自动化测试用例并行执行
Posted chuntian_tester
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用xdist实现自动化测试用例并行执行相关的知识,希望对你有一定的参考价值。
在测试行业,如果利用python作为脚本语言开发自动化测试用例,可用的框架有rf,unittest,pytest等主流可供选择,个人感觉较之rf和unittest,pytest应该算是现阶段最灵活,功能最全面,扩展最丰富的框架了。
不知道各位在做自动化的时候有没有遇到过用例数过多,单机执行效率不高的困扰。接下来浅谈个人对单元测试框架pytest中的并行执行插件pytest-xdist使用心得.
前提
可以并行执行的测试用例,需要满足以下原则:
1、用例之间是独立的,用例之间没有依赖关系,用例可以完全独立运行 【独立运行】
2、用例执行没有顺序,随机顺序都能正常执行 【随机执行】
3、每个用例都能重复运行,运行结果不会影响其他用例 【不影响其他用例】
pytest-xdist这款插件允许用户将测试并发执行(进程级并发). 我们可以通过官方文档https://github.com/pytest-dev/pytest-xdist了解到相关的使用信息
pytest -n 参数,指定并行执行的cpu个数,比如咱们的测试执行机cup个数为8,如果想启动全部cpu参与调度,则直接使用pytest -n 8指定即可
pytest -n auto 可以允许自动选择需要调度的cpu个数,简单方便,可以讲此参数配置到pytest.ini文件中
可以对比下使用插件前后的执行效率:
使用xdist实现并行执行前(先注释掉pytest.ini配置文件中配置):
仅仅构造20条测试数据,参数化驱动
基本每条用例需要执行时间都超过2s,在软硬件及网络环境影响下个别用例执行时间甚至超过20s
如此仅仅20条测试测试数据执行都花了近2分钟,如果测试用例数量达到数千条,测试时间无法控制,对执行者也是一种煎熬。
当用例数量庞大时,还可以利用分布式+xdist并行执行的策略,将执行效率再提升,此处以单机资源+xdist为例,以下为使用并行执行策略时执行效率:
先取消pytest.ini中配置的注释
执行相同测试用例,使用xdist并行执行所用时间近11s,时间对比使用前,提升还是挺明显的,当然我们在实际工作中,还可以使用 多资源分布式+xidist并行执行的策略,进一步提高执行效率。
使用xdist时还需注意 官方文档中提到的加文件锁的方法,因为在实际工作中,如果不用filelock,会导致执行时竞争资源而报错的情况,详细可阅读官方文档中filelock的使用方法
以上是关于利用xdist实现自动化测试用例并行执行的主要内容,如果未能解决你的问题,请参考以下文章
如何在机器人框架中并行运行多个测试套件上的多个测试用例 | Python
使用 CodeceptJS/WebdriverIO 并行执行浏览器