【问题标题】:C# - WebDriver - MSTest framework Parallel ExecutionC# - WebDriver - MSTest 框架并行执行
【发布时间】:2019-01-10 00:30:22
【问题描述】:

我目前正在研究基于 C# - Webdriver - MSTest 的测试框架。我们正在使用 testsettings 文件来启用并行执行。此外,测试是在具有 4 个处理器的机器上执行的,我们使用 Selenium Grid 来执行测试。以下是通宵执行所面临的一些挑战。

  • 由于我们有近 100 多个测试用例,因此在单个线程上完成所需的时间约为 3 小时。我们希望将执行时间减少到近 15 分钟。但是当我们增加 testsettings 文件中的线程数时,会出现很多错误的失败。有没有更好的方法通过减少执行时间来提高通过率?
  • 我遇到了一些博客“https://blogs.msdn.microsoft.com/devops/2016/02/08/parallel-and-context-sensitive-test-execution-with-visual-studio-2015-update-1/”,其中指出可以执行的并行测试数量与该机器的 CPU 核心数量成正比。如果这是正确的,使用 4 核机器,我一次将无法执行超过 4 个线程。如果我使用 xUnit、nUnit 等其他单元测试框架,有没有办法解决这个问题?我以前在 Java - WebDriver 中使用 TestNG 框架工作,我们一次可以执行超过 15 个线程。

如果有人正在使用任何基于 C# 的框架并在更多并行线程中成功执行测试,请提供帮助。

提前致谢。

【问题讨论】:

    标签: multithreading selenium-webdriver mstest selenium-grid


    【解决方案1】:

    当我第一次这样做时,我遇到了和你一样的问题 - 我发现我的测试在 4 个线程中运行得最快,尽管我遇到了很多失败。问题是我们的系统无法同时处理四个登录请求。我尝试使代码线程安全,但这也不起作用;最后,我最终为我们的系统创建了 4 个帐户,并使用了一个静态变量,每次测试登录时都会递增。这将导致下一个测试使用下一个帐户。

    如果您的测试需要登录功能,那么这可能是您的问题?

    您可以通过在代码顶部的“使用”行下方添加此行来设置最大线程数(注意:将此行添加到一个类就足够了,您不需要将它添加到每个类)

    [assembly: Parallelize(Workers = 4, Scope = ExecutionScope.MethodLevel)]
    

    如果您将 4 更改为 0,则将使用 CPU 的最大线程数(对我来说这是 8 个 chromedriver 实例,虽然 4 快得多!)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 2022-07-20
      相关资源
      最近更新 更多