资讯专栏INFORMATION COLUMN

利用xdist实现自动化测试用例并行执行

tabalt / 1553人阅读

摘要:在测试行业,如果利用作为脚本语言开发自动化测试用例,可用的框架有等主流可供选择,个人感觉较之和应该算是现阶段最灵活,功能最全面,扩展最丰富的框架了。不知道各位在做自动化的时候有没有遇到过用例数过多,单机执行效率不高的困扰。

在测试行业,如果利用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的使用方法

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119214.html

相关文章

  • 2021-09-03-接口动化-python+requests+pytest+csv+yaml+a

    摘要:本套代码和逻辑是本人的劳动成果,如果有转载需要标注,非常适合公司做项目的同学小白也可以学哦接口自动化项目目录公共方法的封装如果不用配置文件可以使用这个方法进行封装但是有一定的缺陷可以不使用字典。这是在正常的命令行解析之前发生的。 ...

    李昌杰 评论0 收藏0
  • Pytest测试报告工具Allure的高级用法

     小编写这篇文章的主要目的,是给大家来做个介绍,介绍关于测试报告工具Allure用法的一些详解,主要是关于一些Pytest Allure类的用法,那么,具体的代码实例是什么呢?下面就给大家详细解答下。  Allure除了具有Pytest基本状态外,其他几乎所有功能也都支持。  1、严重性  如果你想对测试用例进行严重等级划分,可以使用 allure.severity装饰器,它可以应用于函数,方法或...

    89542767 评论0 收藏0
  • PHPUnit 加速技巧分享

    摘要:接下来我们将会介绍一些可以快速实现的小技巧,让你的代码测试变得更快。该示例测试套件有意地模拟更广泛的测试集合,并突出改进的可行性。真实情况下,效率的提升可能有所差异。我认为相比通过提升一点速度带来的好处,保持生产环境一致更重要。 showImg(https://segmentfault.com/img/remote/1460000017962057?w=1440&h=736); 具备高...

    weizx 评论0 收藏0
  • 动化测试 之 “好用例、坏用例

    摘要:反之,好用例则是表现稳定的用例。可以建立测试或开发人员坏用例档案,并自动追踪每一个坏用例的来源,督促负责人跟进解决。接下来,需要做的就是大家共同维护好这样一个最佳状态,避免破窗理论的发生。 摘要: 自动化测试的重要性显而易见,但自动化测试又无法解决所有问题,所以说完全依赖自动化是不可能的,但完全没有自动化是万万不能。在软件开发项目中,重度依赖人力进行持续回归是一件非常枯燥的重复工作。企...

    hot_pot_Leo 评论0 收藏0
  • 使用 EOLINKER 进行接口测试的最佳路径 (下)

    摘要:本文使用进行接口测试的最佳路径下半部分文章,主要介绍测试脚本如何执行和报告生成,以及测试项目人员如何协作。定时执行,我们可以添加测试用例在指定的时间执行,并把测试结果发送到你指定的邮箱。 本文《使用 EOLINKER 进行接口测试的最佳路径》 下半部分文章,主要介绍测试脚本如何执行和报告生成,以及测试项目人员如何协作。还没看过上篇文章请戳 使用 EOLINKER 进行接口测试的最佳路径...

    haitiancoder 评论0 收藏0

发表评论

0条评论

tabalt

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<