В настоящее время у меня есть около 15 сценариев в одном файле свойств и вы хотите делиться данными между ними. Я думал, что инъекция контекста будет работать, и она работает между этапами в рамках одного сценария, но я не могу заставить его передавать данные из одного сценария в другой. Как все это достигают?Обмен данными между сценариями Specflow
ответ
Короткий ответ:
Никто не делает это, так как это плохая идея ™
Длинный ответ:
Если у вас есть данные, действительные для всей функции, поместите его в контексте функций. Но эти данные не могут быть изменены в одном сценарии и доступны в другом.
Тестирование будет проводиться в порядке, определенном вашим тестовым бегуном. Различные участники могут выбирать разные заказы. Порядок выполнения может быть изменен с одного выпуска бегуна на следующий. Наличие временной связи между вашими тестами или неявные зависимости также вызывает другие проблемы, например, что происходит, если я хочу самостоятельно выполнить тест? Теперь он завершится неудачно, поскольку предыдущие тесты не были выполнены в первую очередь. Что делать, если я хочу параллельно проводить тесты? Теперь я не могу, поскольку тесты имеют зависимости, которые нужно запускать в первую очередь.
Так что я могу сделать?
Мое предложение состояло в том, чтобы использовать фоновые шаги (или явные шаги в ваших целях) для настройки данных, необходимых вашему индивидуальному сценарию. 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
Это гарантирует, что тест изолируется и не имеет никаких зависимостей.
- 1. Обмен данными между сценариями Greasemonkey
- 2. Обмен данными между сценариями gatling
- 3. Обмен данными между двумя сценариями Python
- 4. Обмен переменными между сценариями оболочки
- 5. GreaseMonkey - обмен данными между двумя сценариями, запущенными на одной вкладке
- 6. Обмен переменными между двумя отдельными сценариями
- 7. Обмен переменной сеанса между несколькими сценариями php
- 8. Обмен данными между JVM
- 9. Обмен данными между контейнерами
- 10. Обмен данными между XIB
- 11. Обмен данными между просмотрщиками
- 12. Обмен данными между тестами
- 13. Обмен данными между программами
- 14. Обмен данными между видами
- 15. Обмен данными между ViewControllers
- 16. Обмен данными между DLL
- 17. Обмен данными между классами
- 18. Обмен данными между действиями
- 19. Обмен данными между микросервисами
- 20. Обмен данными между действиями
- 21. Обмен данными между потоками
- 22. Обмен данными между angularJS
- 23. Обмен данными между HtmlHelpers
- 24. Обмен сценариями Powershell Exchange
- 25. Как делиться данными между двумя сценариями Lua
- 26. Обмен данными с данными Java между классами
- 27. Обмен данными между двумя приложениями
- 28. Обмен данными между страницами html
- 29. Обмен данными между двумя фрагментами?
- 30. Обмен данными между контроллерами - Angularjs
также см. [Мой ответ здесь] (http://stackoverflow.com/a/30777405/97614), в котором приведены некоторые дополнительные сведения о том, как вы можете реализовать некоторые из этих материалов –