首页 > 解决方案 > 如何获取当前的测试夹具属性

问题描述

我运行 selenium 测试,并创建了一个自定义测试夹具属性,我将其应用于每个夹具 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。然而,大多数测试都需要。我想要做的是每个测试夹具

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

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

   // all the test code
}

标签: c#seleniumnunit

解决方案


请尝试下面修改的代码。

[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");
        }
    }
}

推荐阅读