簡體   English   中英

隔離執行功能,但並行包含場景

[英]Executing Feature in isolation, but contained Scenarios in parallel

我有一個龐大且快速增長的空手道測試主體,並使用並行執行來加速處理,這在不同的配置中基本上工作得很好:

  • 正常並行執行(絕大多數測試)
  • 在極少數特殊情況下,在功能 ( parallel=false ) 中順序執行場景
  • 完全順序執行(通過單獨的單線程運行器,由自定義@sequential標記觸發)修改配置設置、全局查找等

然而,對於許多類型的全局查找的基本功能,還有一個參數化(場景大綱)功能。 目前它以“完全順序”模式運行,因為它會影響其他測試。 但實際上該功能中的場景可以並行執行(它們不會相互影響),只要該功能作為一個整體是隔離執行的(因為測試確實會影響其他功能)。

那么 - 有沒有辦法實現“具有並行場景的順序功能”執行? 我承認這可能是一個小眾案例,但在我的案例中它會大大加快測試執行速度。

...並發布這個問題已經讓想法流動起來,並指出了一種可能的實現方式:

  private static void runLocalParallel(Builder<?> builder) {
    final List<Feature> features = builder.tags("@local_parallel").resolveAll();

    for (Feature feature : features) {
      builder.features(feature).parallel(8);
    }
  }

這會識別所有標記有@local_parallel的特征,迭代它們並為每個單獨執行一個並行運行器。 結果處理、報告 output 等仍然需要以優雅的方式實現,但這也是可行的。

是的,確實是一個邊緣案例——但它出現過幾次。 我們想知道一種“分桶”線程的方法,這意味着我們可以做一些事情,比如說某些標簽必須只在特定線程上運行。 想想看,這是一個很好的功能請求,所以我打開了一個,請隨時發表評論。 https://github.com/karatelabs/karate/issues/2235

理論上,如果您編寫一些持有鎖的 Java 粘合代碼,您可以在輸入任何“關鍵”功能之前調用該代碼。 我沒有嘗試過,但可能值得嘗試。

暫無
暫無

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

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