首页 > 其他分享 >多线程并行与分布式执行

多线程并行与分布式执行

时间:2022-10-16 12:34:37浏览次数:56  
标签:执行 测试报告 并行 pytest html test 测试用例 多线程 分布式

假如项目中有测试用例1000条,一条测试用例需要执行1分钟,一个测试人员需要1000分钟才能完成一个轮回测试。通常会用人力成本换取时间成本,加几个人的一起执行,时间就会缩短。如果10人一起执行只需要100分钟,这就是一种并行测试,分布式的场景。pytest-xdist是pytest分布式执行插件,可以多个cpu或主机执行,这款插件允许用户将测试并发执行(进程并发),插件是动态决定测试用例执行顺序的,为了保证各个测试能在各个独立线程里正确的执行,应该确保测试用例的独立性。

1.安装

pip install pytest-xdist
多个cpu并行执行用例,需要在pytest后面添加-n参数,如果参数为auto,会自动检测系统的cpu数目。如果参数为数字,则指定运行测试的处理器进程数
pytest -n auto
pytest -n [num]

2.案例

某个项目有200条测试用例,每条测试用例之间没有关联关系,互不影响,需要在短时间内执行完成,可以加上-n参数,使用多个cpu并行测试。
运行方法:
pytest -n 4
进入到项目目录下,执行pytest可以将项目目录下所有测试用例识别出来并且运行,加上-n参数,可以指定4个cpu并发执行。

3.结合pytest-html生成测试报告

测试报告通常在项目中尤为重要,报告可以体现测试人员的工作量,开发人员可以从测试报告中了解缺陷的情况,测试报告为纠正软件存在的质量问题提供依据,为软件的验收和交付打下基础。测试报告根据内容的侧重点,可以分为“版本测试报告”和“总结测试报告”。执行完pytest测试用例,可以使用pytest.HTML插件生成HTML格式的报告。
安装:pip install pytest-html
执行方法:pytest --html=path/to/html/report.html
结合pytest-xdist使用:pytest -v -s -n 3 --html=report.html --self-contained-html

#test_scope1
import pytest

@pytest.fixture(params=[1,2,3])
def data(request):
    return request.param

def test_not_2(data):
    print(f"测试数据:{data}")
    assert data < 5
import pytest

@pytest.fixture(autouse="true")#每个测试函数都会自动调用这个前置函数
def myfixture():
    print("this is my fixture")

class TestAutoUse:
    def test_one(self):
        print("执行test_one")
        assert 1+2 == 3
    def test_two(self):
        print("执行test_two")
        assert 1==1
    def test_three(self):
        print("执行test_three")
        assert 1+2 == 2

执行结果

html报告


生成的测试报告最终是HTML格式,报告内容包括标题、运行时间、环境、汇总结果以及用例的通过个数、跳过个数、失败个数、错误个数、期望失败个数,不期望通过个数,重新运行个数,以及错误的详细展示信息。报告会生成在运行脚本的同一路经,需要执行路径田间-html=path/to/html/report.html这个参数配置报告的路径。如果不添加--self-contained-html这个参数,生成报告的css文件是独立的,分享的时候容易数据丢失。

标签:执行,测试报告,并行,pytest,html,test,测试用例,多线程,分布式
From: https://www.cnblogs.com/lcc-lv/p/16795961.html

相关文章

  • 面试题:JAVA多线程交替打印ABC
    JAVA实现,3个线程交替A,B,C,一共完成10次“ABC”打印,结束后打印“END”。打印示例:abcabcabcabcabcabcabcabcabcabcEND 分析:打印10次ABC,3个线程分别打印A,B......
  • 高并发和多线程
    高并发是一种状态。如果大量的访问网络中的某个接口,就会出现大量的操作,如数据库操作,资源的请求,硬件的占用等。这就需要对接口进行优化,对sql语句进行优化,而多线程是处理高并......
  • xxl-Job分布式任务调度
    一、分布式任务调度产品了解:1)TBSchedule:淘宝推出的一款非常优秀的高性能分布式调度框架,目前被应用于阿里、京东、支付宝、国美等很多互联网企业的流程调度系统中。但是......
  • docker-compose 实现minio分布式存储服务
    minio是一个非常流行的高性能存储服务,云服务器使用得非常多。现在minio的更新非常迅速,三天两头就会更新版本,为了学习minio,了解最近特性,使用docker进行部署安装就非常方便。......
  • Java----实现多线程(初识)
    Java----实现多线程(初识)进程:正在运行的程序是系统进行分配和调用资源的独立单位每一个进程都有他自己的内存空间和系统资源线程:是进程中的单个顺序控制流,是一条执行......
  • 多线程开发实用技巧
    微信公众号:运维开发故事,作者:老郑线程池动态拓容创建线程池ThreadPoolExecutortaskExecutor=newThreadPoolExecutor(8,64,5,TimeUnit.SECONDS,newLinkedBlockingQue......
  • python多线程获取线程执行结果
     In [1]:fromthreadingimportThreaddeffun(t):"""//执行函数体//t:时间"""v=int(9.8*(t**2))returnvclassMyT......
  • 钡铼技术发布新一代OPC UA分布式 I/O控制器BL200pro助力工业物联网的数字化
    钡铼技术发布新一代OPCUA分布式I/O控制器BL200pro助力工业物联网的数字化钡铼技术推出了具有兼容ModbusTCP、MQTT、OPCUA通讯协议的新一代分布式I/O控制器,BL200PRO是......
  • 工业4.0数据采集神器OPC UA分布式IO控制器BL200PRO
    钡铼技术发布新一代OPCUA分布式I/O控制器BL200pro助力工业物联网的数字化钡铼技术推出了具有兼容ModbusTCP、MQTT、OPCUA通讯协议的新一代分布式I/O控制器,BL200PRO是一......
  • 撬开多线程的大门——学习多线程必须掌握的基本概念
    1.进程进程的概念从字义上理解相对还是比较抽象的,但进程实际上对我们并不陌生,可以说它无时不刻的伴随着我们的生活。当你每天上班打开电脑,运行微信与好友通讯、运行浏览......