2016-05-11 2 views
0

В настоящее время у меня есть около 15 сценариев в одном файле свойств и вы хотите делиться данными между ними. Я думал, что инъекция контекста будет работать, и она работает между этапами в рамках одного сценария, но я не могу заставить его передавать данные из одного сценария в другой. Как все это достигают?Обмен данными между сценариями Specflow

ответ

0

Короткий ответ:

Никто не делает это, так как это плохая идея ™

Длинный ответ:

Если у вас есть данные, действительные для всей функции, поместите его в контексте функций. Но эти данные не могут быть изменены в одном сценарии и доступны в другом.

Тестирование будет проводиться в порядке, определенном вашим тестовым бегуном. Различные участники могут выбирать разные заказы. Порядок выполнения может быть изменен с одного выпуска бегуна на следующий. Наличие временной связи между вашими тестами или неявные зависимости также вызывает другие проблемы, например, что происходит, если я хочу самостоятельно выполнить тест? Теперь он завершится неудачно, поскольку предыдущие тесты не были выполнены в первую очередь. Что делать, если я хочу параллельно проводить тесты? Теперь я не могу, поскольку тесты имеют зависимости, которые нужно запускать в первую очередь.

Так что я могу сделать?

Мое предложение состояло в том, чтобы использовать фоновые шаги (или явные шаги в ваших целях) для настройки данных, необходимых вашему индивидуальному сценарию. Specflow делает повторное использование этих шагов или же эти шаги повторно используют другие шаги, довольно простые. Так что если вам нужен клиент и продукт, чтобы создать заказ и у вас есть сценарии, как это:

Scenario: Creating a customer 
Given a create a new customer called 'bob' 
When I query for customers called 'bob' 
Then I should get back a customer 

Scenario: Creating a product 
Given a create a new product called 'foo' 
And 'foo' has a price of £100 
When I query for products called 'foo' 
Then I should get back a product 
And the price should be £100 

Scenario: customer places an order 
Given I have a customer called 'bob' 
And I have a product called 'foo' with a price £100 
When 'bob' places an order for a 'foo' 
Then an order for 1 'foo' should be created 

здесь последний сценарий создает все данные ему нужно. Он может использовать тот же самый шаг (с другим атрибутом Given) как Given a create a new customer called 'bob' и может иметь новый шаг And I have a product called 'foo' with a price £100 который просто называют две существующих шагов Given a create a new product called 'foo' And 'foo' has a price of £100

Это гарантирует, что тест изолируется и не имеет никаких зависимостей.

+0

также см. [Мой ответ здесь] (http://stackoverflow.com/a/30777405/97614), в котором приведены некоторые дополнительные сведения о том, как вы можете реализовать некоторые из этих материалов –

Смежные вопросы