我如何基于NUnit外部文件的值在运行时动态运行测试方法?

问题描述 投票:0回答:1

我创建了具有两个测试方法的TestFixture类。

[TestFixture]
class SomeTests
{   
        [Test]
        public void OpenScreen()
        { 
            //Do something
        }

        [Test]
        public void TestElement()
        { 
            //Do something
        }   
}

我的要求是根据外部文件的输入来运行这些测试,如下所示:

Test    Value
Screen  "Scr1"
Element "Ele1"
Element "Ele2"
Screen  "Scr2"
Element "Ele3"

我可以使用以下方法将值传递给这些测试方法:

[Test]
[TestCaseSource("GetTestValues")]
public void OpenScreen(string value)
{ 
   //Do something
}

但是我不知道如何按照文件中接收的确切顺序运行这些测试。我该如何实现?

Current order:

OpenScreen("Scr1")
OpenScreen("Scr2")
TestElement("Ele1")
TestElement("Ele2")
TestElement("Ele3")

Expected order:

OpenScreen("Scr1")
TestElement("Ele1")
TestElement("Ele2")
OpenScreen("Scr2")
TestElement("Ele3")

Edit:我正在使用它进行功能测试,以使用Selenium测试某些屏幕。外部文件是包含这些值的Json格式字符串,GetTestValues只是反序列化Json并返回这些值。

c# selenium nunit
1个回答
0
投票

不幸的是,这些测试方法将由NUnit运行程序运行,并且您将无法更改它们的运行顺序。

似乎您正在尝试创建某种验收测试。您可以做的是创建一个测试方法,该方法包装步骤顺序并将OpenScreenTestElement方法保留为简单的辅助方法:

[TestFixture]
class SomeTests
{   
    [Test]
    public void TestInteraction() {
        OpenScreen("Scr1")
        TestElement("Ele1")
        TestElement("Ele2")
        OpenScreen("Scr2")
        TestElement("Ele3")
    }

    public void OpenScreen(String arg)
    { 
        //Do something
    }

    public void TestElement()
    { 
        //Do something
    }   
}
© www.soinside.com 2019 - 2024. All rights reserved.