我当前正在使用C#,nunit和Selenium构建一个自动化项目,并且我试图拥有一个安装类,该类将在运行任何TestFixture之前以及它们都结束并尝试获取后初始化selenium webdriver。每个TestFixture TestFixture属性中OneTimeSetUp的webdriver是否可以完成,还是应该将selenium类更改为static,以便能够在每个TestFixture设置中获取驱动程序字段?

所以基本结构是这样的:

[SetUpFixture]
public class Test
{
    [OneTimeSetUp]
    public void Init()
    {
       _driver = new Driver();
    }
}

[TestFixture]
public class FirstTest
{
    [OneTimeSetUp]
    public void Init()
    {
        xxxxxxxxxx - here I need to initialize a class with the driver from the setup class
    }
}

最佳答案

就目前情况而言,NUnit为您执行此操作的唯一方法是使用静态方法。但是,如果您要并行测试多个驱动程序,这将无法正常工作。

真正的解决方案(需要新的NUnit功能)是允许安装程序夹具将信息保存在TestContext中,然后您的个人夹具就可以访问信息。

一种解决方法是在夹具onetimesetup中创建一个新驱动程序,但前提是尚未创建该驱动程序。这也将需要一个静态变量,但是您可以对其进行设置,以使所支持的每种驱动程序类型都有一个单独的静态变量。

09-05 11:20