Как я могу динамически запускать методы тестирования во время выполнения на основе значений из внешнего файла с помощью NUnit? - PullRequest
0 голосов
/ 21 апреля 2020

Я создал класс 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")

Редактировать: Я использую это для функциональных тестов для тестирования некоторых экранов с использованием Selenium. Внешний файл представляет собой строку формата Json, содержащую эти значения, а GetTestValues просто десериализует Json и возвращает значения.

1 Ответ

0 голосов
/ 21 апреля 2020

К сожалению, эти методы тестирования будут выполняться бегуном NUnit, и вы не сможете изменить порядок их запуска.

Похоже, вы пытаетесь создать какое-то своего рода приемочный тест. Что вы можете сделать, так это создать тестовый метод, который обернет последовательность шагов и оставит ваши OpenScreen и TestElement методы в качестве простых вспомогательных методов:

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

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

    private void TestElement()
    { 
        //Do something
    }   
}

Существует концепция объектов "Page", где вы можете написать методы, которые представляют действия, которые вы выполняете на экране или странице. Методы OpenScreen и TestElement могут быть частью такого объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...