利用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 并行执行浏览器

接口自动化--概述

web自动化 自动化无人值守运行

利用pytest hook函数实现自动化测试结果推送企业微信

python+unittest接口自动化执行多条测试用例怎么实现?