pytest---分布式執行用例(pytest-xdist)


前言

  當我們將所有的自動化測試用例都編寫完成后,進行執行時,由於case較多,導致執行速度比較慢,那么有沒有什么辦法可以加快執行時間呢?有的人會說,可以用多進程,不錯,確實可以使用多進程,這里安靜介紹一個pytest的插件可以用來做分布式執行 pytest-xdist 

pytest-xdist

pytest-xdist插件表示在測試過程中可以使我們的測試用例一起並行測試,運行情況是根據你運行環境存在多個CPU,運行過程中可以進行組合測試運行, 從而加快我們的測試時間。

官方地址:https://pypi.org/project/pytest-xdist/

安裝: pip install pytest-xdist 

查看是否安裝成功: pip show pytest-xdist 

當然如果使用pytest-xdist需要對編寫測試用例一些要求:

  • 每一條用例必須保持獨立性。什么意思呢?就是每條用例不能互相影響其他的用例。
  • 每一條用例沒有特定的執行順序,就是每條用例都要遵循隨機執行
  • 每條用例的測試結果不能影響到其他的測試用例。

使用方法:

pytest -n  x  
# n :表示 使用並行參數
# x:表示需要啟動多少個分布式

使用方法

安靜這里先簡單的寫一條用例,為了統一后續的時間,顯示出來我們的測試時間縮短,在每條用例下都強制等待了2秒

import pytest
import time

class TestCase:
    def test_01(self):
        time.sleep(2)
        print('---測試用例01---')

    def test_02(self):
        time.sleep(2)
        print('---測試用例02---')

    def test_03(self):
        time.sleep(2)
        print('---測試用例03---')

    def test_04(self):
        time.sleep(2)
        print('---測試用例04---')

if __name__ == '__main__':
    pytest.main(['-vs'])

通過執行發現測試這4條case一共用了大概8.07秒

 

那么當我們使用pytest-xdist的方法進行執行看到這里啟動了2個並行分別是GW1和GW0。運行時間為5.07s相當於縮短了3秒鍾

這里安靜只是列舉了2個線程的參數,那么如果我想把我電腦最大的支持的cpu線程都用上怎么操作呢?

這里可以通過使用auto的參數進行,就是將啟動的線程數直接更改成auto

使用方法: pytest -vs -n auto 

調試代碼

當我們在使用分布式方法的時候,分布式給我們提供了一個方法可以對其修改的代碼時,該方法會自動監聽你的代碼修改,如果你的代碼有錯誤,你修改之后保存,他便會自動再運行一遍測試,如果你運行后的結果沒有失敗或者錯誤,你可能需要手動停止測試。這個方法就是 --looponfail 

這里安靜還是通過上面的代碼,我們在用例04中加入錯誤的斷言,然后加上參數--looponfail。 pytest -n 2 --looponfail 

 

通過上述代碼直接發現,展示出來了我們錯誤的測試用例,已經最后顯示等待修改代碼,這里我們自行進行修改代碼。然后就會發現,自動執行了我們新修改的內容。當我們完成代碼后,可以自行退出。

 

 

好了,簡單的總結了如果在pytest中進行分布式執行,大大的降低了我們執行用例的測試時間。加快了我們的執行效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM