连续诗歌并行化Nunit测试

3

我的办公室大约有300个网页需要经常进行测试。我正在使用Visual Studio 2010中的Nunit、Selenium和C#进行工作。我以这个框架为基础,而且我已经有了一些可行的测试。

我遇到的问题是当我运行整个测试套件时,每次运行都会有一个或多个随机的测试失败。如果单独运行它们,它们将全部通过。我猜测Nunit试图同时运行所有7个测试,而浏览器显然无法支持这种方式。从可视化的角度观察浏览器,似乎确实是这种情况。

从下面的截图可以看出,我需要找到一种方式,使得Index_Tests下的测试按顺序而非并行运行。

enter image description here

错误信息:

Selenium2.OfficeClass.Tests.Index_Tests.index_4:
OpenQA.Selenium.NoSuchElementException : Unable to locate element: "method":"id","selector":"textSelectorName"}

Selenium2.OfficeClass.Tests.Index_Tests.index_7:
OpenQA.Selenium.NoSuchElementException : Unable to locate element: "method":"id","selector":"textSelectorName"}

一个测试案例的示例:

using OpenQA.Selenium;
using NUnit.Framework;

namespace Selenium2.OfficeClass.Tests
{
    [TestFixture]
    public class Index_Tests : TestBase
    {
        public IWebDriver driver;

        [TestFixtureSetUp]
        public void TestFixtureSetUp()
        {
            driver = StartBrowser();
        }

        [TestFixtureTearDown]
        public void TestFixtureTearDown()
        {
            driver.Quit();
        }

        [Test]
        public void index_1()
        {
            OfficeClass index = new OfficeClass(driver);
            index.Navigate("http://url_goeshere");
            index.SendKeyID("txtFiscalYear", "input");
            index.SendKeyID("txtIndex", "");
            index.SendKeyID("txtActivity", "input");
            index.ClickID("btnDisplay");
        }
    }
}

为什么不为每个单独的测试设置一个驱动程序呢? - Sign
@符号:我正在使用7作为测试案例。最终会有更多这样的案例,每个测试运行一个不同的驱动程序将会极其耗费资源。我不介意在"Tests"下为每个步骤都设置一个驱动程序,但我更希望这些条目下面的所有内容都共享一个浏览器。 - Jacobm001
1个回答

2
NUnit通常不会并行运行测试。然而,如果在许多测试中使用相同的 Web 驱动程序,则可能会在测试之间引入不必要的依赖关系。您所描述的行为看起来像是您的浏览器在测试后异步执行某些操作,这可能有时会影响接下来的测试。
我的建议是:如果为每个测试设置单独的驱动程序速度太慢,请尝试在测试之间将您的 Web 浏览器(驱动程序)带回到定义的初始状态,并确保在每个测试完成时完成任何异步任务。您可以利用 [Setup] 和/或 [Teardown] 方法来实现这一点。也许您需要在每个测试后添加一些等待代码。我对 Selenium 不是很了解,但是在文档here中简短地查看后,发现有一个 WebDriverWait 示例可能对您有用。

有趣的是,根据它推动测试的速度,我以为它们正在尝试同时运行。WebDriverWait似乎非常有帮助,感谢您指出这一点。 :) - Jacobm001

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接