首頁 > 軟體

pytest實現多程序與多執行緒執行超好用的外掛

2022-07-15 14:03:51

前言

如果想分散式執行用例,用例設計必須遵循以下原則:

1、用例之間都是獨立的,
2、用例a不要去依賴用例b
3、用例執行沒先後順序,
4、隨機都能執行每個用例都能獨立執行成功每個用例都能重複執行,不影響其它用例
這跟就我們平常多個人工測試一樣,用例都是獨立的,可以隨機分配不同人員執行,互相不依賴,用例之間也不存在先後順序

一、pytest-parallel

安裝:pip install pytest-parallel

常用引數設定:

  • --workers=n:多程序執行需要加此引數, n是程序數。預設為1
  • --tests-per-worker=n:多執行緒需要新增此引數,n是執行緒數

如果兩個引數都設定了,就是程序並行,每個程序最多n個執行緒,匯流排程數:程序數*執行緒數

注意:在windows上程序數永遠為1。

需要使用 if name == “main”:,在dos中執行會報錯

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @project : API_Service
# @File    : test_1.py
# @Date    : 2021/6/15 3:07 下午
# @Author  : 李文良


# demo:
import pytest

def test_01():
    print('測試用例1操作')

def test_02():
    print('測試用例2操作')

def test_03():
    print('測試用例3操作')

def test_04():
    print('測試用例4操作')


def test_05():
    print('測試用例5操作')


def test_06():
    print('測試用例6操作')


def test_07():
    print('測試用例7操作')


def test_08():
    print('測試用例8操作')

if __name__ == "__main__":
    pytest.main(["-s", "test_1.py",'--workers=2', '--tests-per-worker=4'])

二、pytest-xdist

安裝:pip install pytest-xdist

不支援多執行緒

常用引數設定:

  • -n=*:*代表程序數

多cpu並行執行用例,直接加個-n引數即可,後面num引數就是並行數量,比如num設定為3

  • -n auto 自動偵測系統裡的CPU數目
  • -n num 指定執行測試的處理器程序數

三、對比說明

pytest-parallel比pytst-xdist相對好用,功能支援多。

pytst-xdist不支援多執行緒,而pytest-parallel支援python3.6及以上版本,如果想做多程序並行在linux或者mac上做,在Windows上不起作用(Workers=1),如果做多執行緒linux/mac/windows平臺都支援,程序數為workers的值。

pytest-parallel常用設定命令如下

  • –workers (optional) *:多程序執行需要加此引數, *是程序數。預設為1。
  • –tests-per-worker (optional) *:多執行緒執行, *是每個worker執行的最大並行執行緒數。預設為1

pytest test.py --workers 3:3個程序執行
pytest test.py --tests-per-worker 4:4個執行緒執行
pytest test.py --workers 2 --tests-per-worker 4:2個程序並行,且每個程序最多4個執行緒執行,即總共最多8個執行緒執行。

四、特別注意

1、pytest-parallel的workers引數在windows系統下永遠是1,在linux和mac下可以取不同值。
2、pytest-parallel加了多執行緒處理後,最後執行時間是執行時間最長的執行緒的時間。
3、在windows下想用多程序的選pytst-xdist; 想用多執行緒的選pytest-parallel

到此這篇關於pytest實現多程序與多執行緒執行超好用的外掛的文章就介紹到這了,更多相關pytest 多程序與多執行緒執行外掛內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com