1

我正在使用 NUnit + Webdriver + C#。安装类有下一个结构:

[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(ChromeDriver))]
public partial class SetupBase<TWebDriver> where TWebDriver : IWebDriver, new()
{       
    public IWebDriver _driver;
    [OneTimeSetUp]
    public void OneTimeSetUp()
    {  
        Init();
    }
 }

如何设置测试名称以包含方法名称、参数和浏览器名称?

我尝试了功能,但没有帮助

ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability("Name", String.Format ("{0}_Chrome", TestContext.CurrentContext.Test.Name), true);

还尝试使用下一个代码,但无法找到如何将驱动程序类型传递给 NameAttribute

public class NameAttribute : NUnitAttribute, IApplyToTest
    {
        public NameAttribute(string name)
        {
            Name = String.Format("{0} {1}", name);
        }

        public string Name { get; set; }

        public void ApplyToTest(Test test)
        {
            test.Properties.Add("Name", Name);
        }
    }

你能帮我吗。也许需要以某种方式更新基类结构?

这就是我在测试中使用的方式

public class _001_General<TWebDriver> : SetupBase<TWebDriver> where TWebDriver : IWebDriver, new()
    {     
        [OneTimeSetUp]
        public void OneTimeSetupTest ()
        {
            //somework
        }

        [Test]
        public void Test ()
        {
            //somework
        }
     }

SetupBase 类还包含在测试中使用的函数

4

1 回答 1

0

在 NUnit 中,测试用例、测试方法、测试夹具和通用测试夹具类都是“测试”,尽管我们有时会松散地谈论“测试”作为测试用例的含义。

在您的示例中,创建了以下名称:

_001_General<TWebDriver> (or maybe _001_General<>)
    _001_General<InternetExplorerDriver>
        Test
    _001_General<ChromeDriver>
        Test

测试也有“全名”,类似于类型或方法。例如

_001_General<ChromeDriver>.Test

(注意:全名还包括一个命名空间,我没有显示。)

如果您使用的是显示全名的运行器,例如 NUnit 3 Console Runner,则没有问题。所以,我假设你不是。:-)

一些运行程序,如 NUnit 3 Visual Studio 测试适配器使用简单的测试用例名称。因此,您最终会看到一堆名称为“Test”的测试。

那是你的问题吗?如果是这样,这不是一个很好的答案。:-) 但是,在听到您要使用的跑步者以及您希望在其中显示的内容后,我会将其保留为部分内容并添加到其中。

更新:

根据您的评论,您真正想看到的是测试 FullName - 正如 TC 为您运行的 NUnit 3 控制台运行程序所显示的那样。您希望使用 NUnit 3 VS Adapter 在 VS IDE 中看到它们。

不幸的是,你现在不能。:-) 更多内容如下。同时,这里有一些解决方法:

  1. 使用桌面上的控制台运行器。它不那么直观,但效果很好。这就是我经常工作的方式。脚步:

    • 安装控制台运行器。我建议使用 Chocolatey 全局安装它,让您可以在所有项目中使用它。
    • 设置您的项目以使用您喜欢的任何选项运行控制台运行器。
    • 确保使用外部控制台窗口,以便获得使控制台运行器更易于使用的颜色显示选项。
    • 调整您的窗口大小,以便您可以看到所有内容(如果您有足够的屏幕空间),或者只是让控制台在 VS 顶部弹出。
  2. 尝试通过以包含驱动程序参数的方式设置测试名称来欺骗 VS。这就是您已经在做的事情,听起来好像您已经从这个选项中获得了几乎所有的东西,即没有类参数的类名。您可以通过为每个驱动程序创建单独的类来尝试更进一步。显然,这会增加您拥有的类的数量,但不必复制代码。您可以使用泛型类的继承来创建一个新类,在每个需要它的地方只有一个标题。喜欢...

    公共类 TestXYZDriver : TestDriver ...

这可能需要做很多工作,因此这实际上取决于您现在获得包含夹具参数的视觉结果的重要性。


将来,您可以要求 NUnit 3 Adapter 项目提供按全名列出测试的选项。我已经有几年没有从事那个项目了,所以我不确定它是否真的可能。它可能不完全由适配器控制,因为 VS 控制显示的内容。

于 2018-10-12T15:54:26.750 回答