【问题标题】:How to know which tests were run together in parallel?如何知道哪些测试是并行运行的?
【发布时间】:2016-01-28 09:11:08
【问题描述】:

我的问题一般是这样的:当我并行运行自动化测试时,我如何知道其中哪些是同时运行的?

我的问题是这样的: 我正在并行运行测试(每次 4 个测试),但我不知道它们中的哪些正在(同时)一起执行,哪些正在等待。

在我的测试执行后出现了一些失败,这可能是失败的原因是与失败的测试同时执行的其他测试。所以我想知道哪些测试是一起执行的,这样我就可以再次一起运行它们来调试失败的测试。

我使用的技术:NUnit 3.0、C#、Selenium WebDriver、Jenkins

我很高兴听到任何可能的解决方案(如果很难申请也没关系)

【问题讨论】:

  • 您可以跟踪每个测试的开始和结束时间并比较它们以找到并行执行案例。

标签: jenkins nunit automated-tests


【解决方案1】:

出于调试目的,您可以使用 --trace=Verbose 选项运行 NUnit 控制台。

这会将日志写入您正在执行的目录中,如下所示:

14:56:13.972 Info  [13] TestWorker: Worker#4 executing TestsSuite1
14:56:13.973 Debug [13] WorkItemDispatcher: Directly executing TestA
14:56:13.976 Debug [12] WorkItemDispatcher: Directly executing TestB
14:56:13.976 Debug [16] WorkItemDispatcher: Directly executing TestC
14:56:13.980 Debug [12] WorkItemDispatcher: Directly executing TestD
14:56:13.982 Debug [16] WorkItemDispatcher: Directly executing TestE(False,False,False,0)
14:56:13.989 Debug [16] WorkItemDispatcher: Directly executing TestE(False,False,True,0)

我相信方括号中的数字标识了不同的线程,所以在这里,您可以看到工人 12 和 16 同时运行 TestC 和 TestD。

当然,这绝不是仅仅查看哪些测试同时运行那么简单,但这可能有助于缩小问题范围。

【讨论】:

  • 使用 --trace=Info 会减少输出并且更容易解释。目前,NUnit 不会在同一个夹具中并行运行测试方法,因此您只需要查看上面的 Info 行。
【解决方案2】:

最简单的方法是有选择地禁用并行性,直到找到导致问题的组合。

  1. 通过运行 --workers=0 禁用所有并行性。如果相同的测试失败,那么您就不存在并行问题。

  2. 有选择地一起重新运行失败的测试,使用 --test 或 --where 选项来选择它们。编辑固定装置以启用/禁用并行性,直到您找到完成这项工作的组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2020-02-27
    • 2014-07-16
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    相关资源
    最近更新 更多