Nunit Selenium并行测试与值

4

我正在尝试使用不同的值并行运行相同的nunit测试方法。然而,第二个测试似乎会失败(我认为它正在尝试使用浏览器的第一个实例);

这是测试用例:

 namespace AutomationProject.Login_Test_Cases
{
    [TestFixture]
    [Parallelizable(ParallelScope.Children)]
    class Login_Test_Cases: BaseTest
    {

        [Test]

        public void LoginPar([Values("skynet" ,"skynet2")] string username)
        {

            lg.Log_In(username, "password");
            }
        }
}

这是设置浏览器的基本测试(baseTest);

namespace AutomationProject.BaseClasses
{
    public class BaseTest 

    {

        public Log_In_Methods lg;
        public IWebDriver driver;


       [SetUp]
        public void StartBrowser()
        {

            System.Diagnostics.Trace.AutoFlush = true;

            ChromeOptions options = new ChromeOptions();
            options.AddAdditionalCapability("useAutomationExtension", false);
            driver = new ChromeDriver(//path to chrome driver);

            lg = new Log_In_Methods(driver);

            driver.Manage().Window.Maximize();
            driver.Url = "http://login-test.com";


        }

我还添加了 [assembly: Parallelizable(ParallelScope.Children)] [assembly: LevelOfParallelism(2)] 到 AssemblyInfo

第二个测试似乎总是失败(浏览器甚至没有获取到url)

我可以并行运行不同的类和测试,没有任何问题。

有人知道是否可以并行运行具有不同值的相同测试方法吗?


将StartBrowser()方法调用到Login_Test_Cases类中。 - Dhru 'soni
谢谢,但恐怕没有运气。我尝试删除[SetUp]注释并调用StartBrowser(),但第二个测试仍然像上面一样失败。 - TestManDem
1个回答

2
有人知道是否可以使用不同的值并行运行相同的测试方法吗?
这是完全可能的。问题在于两个测试在单个BaseTest类实例上并行运行,因此您只有一个lg字段,两个测试都试图同时创建/使用它。
能够使用两个独立的BaseTest对象运行两个不同的测试是一个开放的功能请求,请参见:https://github.com/nunit/nunit/issues/2574 与此同时,如果您将SetUp逻辑包含在测试方法中并使用局部变量,则您尝试做的应该可以工作。

1
谢谢,将本地变量(创建驱动程序和页面)添加到[Test]逻辑中可以解决问题。很抱歉我没有足够的声望来点赞。 - TestManDem

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