如何获取当前的测试治具属性

时间:2018-12-19 16:39:35

标签: c# selenium nunit

我运行硒测试,并且创建了一个自定义的Test Fixture属性,每次使用一个新的驱动程序,我将其应用于每个灯具3次,因此我的测试可以在3个不同的浏览器中分别运行3次。看起来像这样:

[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(ChromeDriver))]
class Edit<TWebDriver> : BaseTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
   [Test]
   public void Test()
   {
      //test code
   }
}

对于我的测试装置,我以1:1的比例镜像Web应用程序视图-因此,Web应用程序代码中的Dashboard \ Index视图将是我的测试相同视图的测试的Dashboard \ Index文件夹,因此测试组织非常严格。

我遇到了一个问题,即某些测试不应在某些浏览器(例如IE)上运行。但是大多数测试都需要。我要尝试的是针对每个测试夹具

有什么方法可以在测试运行时获取Test Fixture typeof值,所以我可以执行以下操作(伪代码)...:

[Test]
public void Test()
{
   if(testFixture typeof is InternetExplorerDriver)
   {
      Assert.Ignore("test not to be run in IE");
   }

   // all the test code
}

1 个答案:

答案 0 :(得分:1)

请尝试修改以下代码。

[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(ChromeDriver))]
class Edit<TWebDriver> : BaseTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
    private TWebDriver webDriver;

    public Edit(TWebDriver webDriver)
    {
        this.webDriver = webDriver;
    }

    [Test]
    public void Test()
    {
        //test code
        if (this.webDriver.GetType() == typeof(InternetExplorerDriver))
        {
            Assert.Ignore("test not to be run in IE");
        }
    }
}