zoukankan      html  css  js  c++  java
  • Pytest学习(十六)- 分布式测试插件之pytest-xdist的使用

    前言

    类似TestNG中的多线程并发执行用例,只是python叫多进程,目的就是批量执行测试脚本,从而节省自动化测试时间。

    分布式执行用例的设计原则(重中之重的重点)

    • 用例之间是独立的,用例之间没有依赖关系,用例可以完全独立运行【独立运行】
    • 用例执行没有顺序,随机顺序都能正常执行【随机执行】
    • 每个用例都能重复运行,运行结果不会影响其他用例【不影响其他用例】

    安装插件

    pip3 install pytest-xdist -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
    

    pytest-xdist特性

    • 测试运行并行化:如果有多个CPU或主机,则可以将它们用于组合的测试运行。 这样可以加快开发速度或使用远程计算机的特殊资源。
    • --looponfail:在子进程中重复运行测试。 每次运行之后,pytest都会等到项目中的文件更改后再运行之前失败的测试。 重复此过程,直到所有测试通过,然后再次执行完整运行。
    • 跨平台覆盖:可以指定不同的Python解释程序或不同的平台,并在所有这些平台上并行运行测试。

    使用方法

    执行某个目录下所有用例

    1、不使用分布式测试

    命令行:

    pytest -s
    

    所需时间如下:

    2、使用分布式测试

    命令行:

    pytest -s -n auto
    

    所需时间如下:

    3、指定需要多少个CPU来跑用例

    pytest -s -n 2
    

    效果如图:

    4、pytest-xdist和pytest-html结合使用

    示例命令:

    pytest -s -n auto --html=report.html --self-contained-html
    

    5、pytest-xdist按照一定的顺序执行

    pytest-xdist默认是无序执行的,可以通过 --dist 参数来控制顺序

    • **--dist=loadscope **
      将按照同一个模块module下的函数和同一个测试类class下的方法来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行
      目前无法自定义分组,按类class分组优先于按模块module分组

    • --dist=loadfile
      按照同一个文件名来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行

  • 相关阅读:
    linux 彻底删除文件及 find命令permission refused问题解决
    ubuntu系统中dpkg lock问题分析及解决
    ubuntu server18.04 更换默认源为阿里源-加速
    docker安装与卸载( liunx )
    ubuntu下dpkg lock问题
    docker pull报x509问题及docker启动失败问题解决
    windows 常用命令行操作
    uwsgi运行django应用是报错no app loaded. going in full dynamic mode
    internal server error原因及解决
    docker-compose启动容器后执行脚本或命令不退出 | 运行内部程序
  • 原文地址:https://www.cnblogs.com/longronglang/p/14056302.html
Copyright © 2011-2022 走看看