好文分享 — How to run pytest in parallel on GitHub actions
隨著測試案例變多,通常測試的時間就會拉長,如果偶爾用測試的時間去散散步、喝杯咖啡倒還好,但是如果是部署到 production 時、趕開發進度時,過長的測試時間就會讓人胃食道逆流(誤
縮短測試時間通常有幾種方法:
- 不執行測試(心臟超大)
- 只執行與變動有關的部分測試案例
- 平行執行測試
CircleCI 就有提供平行測試的功能,不過像是 GitHub Actions 就需要一些額外手段才能達成。
“How to run pytest in parallel on GitHub actions” 1 文分享如何在 GitHub Actions 平行執行 pytest 測試,藉此縮短測試時間。
整個作法說來也蠻聰明的,就是藉由 pytest 所提供的 pytest_collection_modifyitems
與 pytest_deselected
hooks 動態決定每 1 個 GitHub Actions Worker 要執行哪些測試,例如有 400 個測試案例與 4 個 workers 的話,每 1 個 worker 都可以藉由環境變數裡的 worker 編號算出自己「不要執行」哪些測試案例,而給定的編號是透過 GitHub Actions 所提供的 matrix
設定所達成。
如果你也想要炮製在不同 workers 或者機器上做平行化測試的功能時,該文分享的方法其實還蠻值得參考學習的。
推推!