在測驗行業,如果利用python作為腳本語言開發自動化測驗用例,可用的框架有rf,unittest,pytest等主流可供選擇,個人感覺較之rf和unittest,pytest應該算是現階段最靈活,功能最全面,擴展最豐富的框架了,
不知道各位在做自動化的時候有沒有遇到過用例數過多,單機執行效率不高的困擾,接下來淺談個人對單元測驗框架pytest中的并行執行插件pytest-xdist使用心得.
前提
可以并行執行的測驗用例,需要滿足以下原則:
1、用例之間是獨立的,用例之間沒有依賴關系,用例可以完全獨立運行 【獨立運行】
2、用例執行沒有順序,隨機順序都能正常執行 【隨機執行】
3、每個用例都能重復運行,運行結果不會影響其他用例 【不影響其他用例】
pytest-xdist這款插件允許用戶將測驗并發執行(行程級并發). 我們可以通過官方檔案https://github.com/pytest-dev/pytest-xdist了解到相關的使用資訊

pytest -n 引數,指定并行執行的cpu個數,比如咱們的測驗執行機cup個數為8,如果想啟動全部cpu參與調度,則直接使用pytest -n 8指定即可
pytest -n auto 可以允許自動選擇需要調度的cpu個數,簡單方便,可以講此引數配置到pytest.ini檔案中

可以對比下使用插件前后的執行效率:
使用xdist實作并行執行前(先注釋掉pytest.ini組態檔中配置):
僅僅構造20條測驗資料,引數化驅動

基本每條用例需要執行時間都超過2s,在軟硬體及網路環境影響下個別用例執行時間甚至超過20s

如此僅僅20條測驗測驗資料執行都花了近2分鐘,如果測驗用例數量達到數千條,測驗時間無法控制,對執行者也是一種煎熬,
當用例數量龐大時,還可以利用分布式+xdist并行執行的策略,將執行效率再提升,此處以單機資源+xdist為例,以下為使用并行執行策略時執行效率:
先取消pytest.ini中配置的注釋

執行相同測驗用例,使用xdist并行執行所用時間近11s,時間對比使用前,提升還是挺明顯的,當然我們在實際作業中,還可以使用 多資源分布式+xidist并行執行的策略,進一步提高執行效率,
使用xdist時還需注意 官方檔案中提到的加檔案鎖的方法,因為在實際作業中,如果不用filelock,會導致執行時競爭資源而報錯的情況,詳細可閱讀官方檔案中filelock的使用方法

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297560.html
標籤:其他
