SpecFlow — есть ли способ запустить сценарии из VS со значениями, установленными пользователем?

Прежде всего, я новичок здесь и новичок в SpecFlow. Я постараюсь быть максимально ясным, потому что я все еще изучаю способы решения своих проблем, поэтому, пожалуйста, потерпите меня :)

Ладно, я иду. У меня есть решение (давайте назовем его DBHelper), которое выполняет несколько операций с базой данных, и я хочу предоставить инструмент в BBD (используя specflow) для определения и настройки набора тестов с использованием тестовой шины, которая будет запускаться автоматически. Эти тесты могут быть набором, состоящим из одного сценария, запускаемого несколько раз, но с разными значениями. Я все еще очень рано разрабатываю этот инструмент, поэтому версия, которая у меня сейчас есть, подключена к DBHelper и выполняет одну операцию, когда я запускаю либо SpecRun, либо NUnit.

Вот мой сценарий: Сценарий: InsertBuildCommand

Given The build name is AmazingTest
And The build type is Test
And The platform is PC
And The number of files in the build is 13
And Each file is 8 MB
And The project code name is UPS
And The studio code name is MTL
And The environment is TEST
When The command executes
Then The build should be inserted in the DB with the correct files in it

Теперь я ищу способ сделать сценарий динамичным. В конечном итоге я хочу, чтобы пользователь мог запустить сценарий, но его выбор значений (например, имя сборки будет MoreAmazingTest), не находясь в VS. Я знаю, что вы можете запустить SpecRun из командной строки, но я понятия не имею, как сократить разрыв между изначально жестко закодированными значениями сценария и пользовательским вводом. Шаги содержат регулярное выражение, где оно полезно, поэтому речь идет только о значениях сценария.

Кто-то рассказал мне о кодировании собственного плагина или обратном проектировании Specrun и создании его модифицированной версии, но я понятия не имею, как это мне поможет. Простите меня, если все это имеет смысл, я не эксперт :x

Большое спасибо!


person Picnic8    schedule 11.02.2016    source источник


Ответы (3)


Если я правильно понимаю ваш вопрос, вы можете использовать схему сценария, а не сценарий. Справка по Scenario Outline

Тогда у вас будет что-то вроде этого:

Scenario Outline: test using multiple examples
    Given I do something
    When I enter <numbers>
    And I click a button
    Then I will have an answer

Examples:
|numbers|
|1      |
|2      |
|3      |

Затем он будет запускать один и тот же сценарий для каждого приведенного примера.

person David Perry    schedule 17.03.2016

Один из способов — определить какой-то файл конфигурации, который будут считывать определения шагов и выполнять на нем тесты. После того, как вы измените файл, вы можете запустить тесты, как хотите, из командной строки или VS, и он прочитает файл и получит оттуда числа.

person Slava Shpitalny    schedule 09.03.2016

Я использую для этого переменные окружения.

Но если вам действительно нужны аргументы, вы также можете создать .exe (консольное приложение), которое использует specflow/nunit/etc для передачи аргументов cmd вашим классам.

person Eliezer Cazares    schedule 30.10.2018