46-pytest-分布式插件pytest-xdist使用

Posted 爱学习de测试小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了46-pytest-分布式插件pytest-xdist使用相关的知识,希望对你有一定的参考价值。

分布式插件pytest-xdist使用


前言

  • 本篇来学习下在pytest中分布式执行测试用例,以节省测试时间。

安装插件

pip install pytest-xdist

分布式用例设计原则

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

使用示例

  • 顺序执行
# -*- coding: utf-8 -*-
# @Time    : 2022/11/26
# @Author  : 大海
import time
import pytest


def test_01():
    print('case 1')
    time.sleep(2)
    assert 1 == 1


def test_02():
    print('case 2')
    time.sleep(2)
    assert 1 == 1


def test_03():
    print('case 3')
    time.sleep(2)
    assert 1 == 1


def test_04():
    print('case 4')
    time.sleep(2)
    assert 1 == 1


def test_05():
    print('case 5')
    time.sleep(2)
    assert 1 == 1


if __name__ == '__main__':
    # 顺序执行
    pytest.main(['-s', 'test_78.py'])

  • 并行执行:加-n参数后面数字是并行数
# -*- coding: utf-8 -*-
# @Time    : 2022/11/26
# @Author  : 大海
import time
import pytest


def test_01():
    print('case 1')
    time.sleep(2)
    assert 1 == 1


def test_02():
    print('case 2')
    time.sleep(2)
    assert 1 == 1


def test_03():
    print('case 3')
    time.sleep(2)
    assert 1 == 1


def test_04():
    print('case 4')
    time.sleep(2)
    assert 1 == 1


def test_05():
    print('case 5')
    time.sleep(2)
    assert 1 == 1


if __name__ == '__main__':
    # 并行执行 加-n参数后面数字是并行数
    pytest.main(['-s', 'test_78.py', '-n=4', '--html=report.html', '--self-contained-html'])

测试报告

按一定顺序执行

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

      将按照同一个模块module下的函数和同一个测试类class下的方法来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行

    • –dist=loadfile

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

以上是关于46-pytest-分布式插件pytest-xdist使用的主要内容,如果未能解决你的问题,请参考以下文章

pytest学习系列_插件之分布式执行

3/N层架构“框架+插件”架构地域分布式架构

什么是分布式系统,如何学习分布式系统

一张图告诉大家Final Cut Pro X插件分布位置

Mercurial Maven Release 插件问题

五十七.分布式ELK平台ES安装 扩展插件 Kibana安装