iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Python

利用Python完成自動化測試專案系列 第 18

D18 pytest 插件(1) pytest-xdist 平行測試

  • 分享至 

  • xImage
  •  

今天要介紹 pytest 的插件,插件是 pytest 的特點之一,豐富的第三方插件讓 pytest 在測試上有很大的自由度。今天就要來介紹幾個好用的插件。

pytest xdist

當測試的 case 越來越多的時候,要完整跑過一輪測試會花上很長的時間,若是一條一條執行的話可能會花好幾小時才跑完一輪,非常沒有效率,這個時候就可以使用 xdist 這個插件來處理這個問題,達到平行測試的效果。

平行測試

簡單來講就是在同一時間內同時執行多個測試,通常會在不同的 CPU 核心上分開執行。

使用方式

首先要安裝插件

pip install pytest-xdist

然後在終端輸入

pytest -n auto

就會開始執行平行測試。auto 指令會自動抓你的電腦有幾顆 CPU 核心並全部使用,若要指定一次執行幾項測試在 auto 的地方改成數字,例如要一次執行三條 case 就輸入pytest -n 3

平行測試的限制

雖然平行測試聽起來好像很方便,跑一次測試可以節省兩三倍以上的時間,但還是有一些限制:

  1. 吃效能

雖然理論上 CPU 有多少顆核心就可以一次執行多少條測試,但是一次跑太多條不只不會變快,反而會讓測試變卡,甚至會導致測試 crash,以筆者當時在筆電測試,雖然理論上可以一次跑八條,但是實際上設定到 3 條以上就會導致測試當機。

  1. 測試之間互相衝突

若不同測試之間有關連性而非獨立,在執行平行測試時可能會發生衝突而導致測試無法按照預期進行,可以透過dist=loadscope來將測試分組,確保不會發生衝突。

xdist 是個實用的插件,只要注意它的限制,可以最大幅度的節省一輪測試進行的時間,明天預計會介紹更多實用插件。


上一篇
D17 pytest fixture
下一篇
D19 pytest 插件(2)
系列文
利用Python完成自動化測試專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言