簡體   English   中英

如何在等待時暫停 py.test 測試並進行其他一些測試?

[英]How to pause py.test test and do some other tests at the time of waiting?

我有很多“長時間測試”,我必須等待一些相對較大的超時(分鍾)。 例如我在測試中調用了一些 API,等待 15 分鍾,然后檢查網頁是否有變化。

所以問題是 - 如何暫停一些測試但在等待時進行其他測試。 我不能只使用 sleep() - 在這種情況下,完整的測試服將持續數小時(15 分鍾 *(此類測試的數量))。

我看到的一個解決方案 - 安排測試(使用鈎子 pytest_collection_modifyitems):

  1. 運行所有長測試的第一部分(在 15 分鍾暫停之前)(在上面的長測試示例中調用 API)
  2. 運行所有簡短測試
  3. (可選)如果 (2) 花費的時間少於 15 分鍾,請稍等
  4. 運行所有長測試的第二部分(暫停后)(檢查上面示例中的網頁)

但這只會是一團糟,很難管理。

這會產生很多在 (1) 中運行的虛擬測試 - 實際上這類似於測試設置,我不需要它們的結果,但 pytest 會將它們視為單獨的測試。

UPD xdist 沒有太大幫助 - 即使我可以控制它如何並行化測試(在哪些組中同時運行),我也必須並行運行所有長測試,因為我想在等待的時候做一些有用的事情,而不是只需等待(15 分鍾 *(長時間測試的數量))/(xdist 進程的數量)。

這似乎是唯一的方法 - 為此修補 pytest 的主循環。 所以它將異步運行測試。 但我什至不知道從哪里開始這樣做..

UPD2 第二個想法 xdist 可能會有所幫助 如果我有足夠的並行進程,那么長時間運行的測試不會在此測試中的長時間等待期間阻塞小測試。

pytest-xdist有一個pytest-xdist插件,可以啟用測試運行並行化。 也就是說,您的測試將由多個進程(在多個 CPU 上)同時運行。 這並不完全符合您的要求——它不會暫停長時間運行的測試——但它確實允許其他測試在運行長時間運行的測試的同時運行。

如果您可以編輯問題以描述測試的“第一部分”和“第二部分”的含義,我可能會給出更好的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM