Я только начал использовать поток Spec вместе с Selenium & N Unit. У меня есть основной вопрос, возможно, я знаю ответ на него, но хочу, чтобы это подтвердилось. Подумайте, есть 2 функции - Регистрация, Добавить новую транзакцию. 2 отдельных элемента с их соответствующими определениями шага. Как я могу совместно использовать элемент IWebDriver для обеих функций. Я не хочу снова запускать новый браузер. & добавьте транзакцию. Хотите выполнить как поток, так и поток. Мои мысли о том, что эта функция не допускается с использованием потока Spec, поскольку основное использование тестирования на основе функций нарушается как попытка запустить 2 функции в одном сеансе. Будет ли помощь в помощи контекстного инжектора в этом случае?Specflow, Selenium-Share данные между различными определениями шага или классами
ответ
Что вы хотите сделать, это плохая идея. вы должны начать новый сеанс браузера для каждой функции, IMHO.
Нет гарантии, в каком порядке ваши тесты будут выполнены, это будет определено тестовым бегуном, так что вы можете получить Feature2 перед Feature1.
Фактически, ваши сценарии также должны быть независимыми.
Вы можете совместно использовать экземпляр webdriver между шагами, как в this answer, но вы должны использовать специальные функции, такие как сценарий Background
, чтобы выполнить настройку или определенные шаги, которые выполняют настройки вашего комманда.
EDIT
У нас есть аналогичные проблемы с некоторыми из наших тестов, и это то, что мы делаем:
Мы создаем sceanrio для первого шага
Feature: thing 1 is done
Scenario: Do step 1
Given we set things for step 1 up
When we execute step 1
Then some result of step one should be verified
Тогда мы делаем один для шага 2 (который позволяет предположить, что он полагается на этап 1)
Feature: thing 2 is processed
Scenario: Do step 2
Given we have done step 1
And we set things for step 2 up
When we execute step 2
Then some result of step 2 should be verified
Это первый шаг Given we have done step 1
это шаг, который вызывает все шаги функции 1:
[Given("we have done step 1")]
public void GivenWeHaveDoneStep1()
{
Given("we set things for step 1 up");
When("we execute step 1");
Then("some result of step one should be verified");
}
Тогда, если мы шаг 3 мы делаем это:
Feature: thing 3 happens
Scenario: Do step 3
Given we have done step 2
And we set things for step 3 up
When we execute step 3
Then some result of step 3 should be verified
Снова Given we have done step 2
является композитный шаг, который вызывает все этапы сценария для этапа 2 (и, следовательно, все этапы этапа 1)
[Given("we have done step 2")]
public void GivenWeHaveDoneStep2()
{
Given("we have done step 1");
Given("we set things for step 2 up");
When("we execute step 2");
Then("some result of step 2 should be verified");
}
Повторяем этот процесс, чтобы, когда мы переходим к шагу 5, он выполняет все шаги в правильном порядке. Иногда мы добираемся до шага 5, мы делаем @ignore
предыдущие 4 шага, так как все они будут вызываться по шагу 5 в любом случае.
@ Сэм-я понимаю, что вы имели в виду, функции запускаются в любом порядке выбора. Есть ли способ заставить это работать в порядке. Я планирую запустить поток дыма - набор из 5 функций в определенном порядке. Будет ли все тесты дыма в конкретной папке и запускать их путем нумерации. Я знаю ИМХО, это не отличная идея. – ReuseAutomator
Я хочу запустить пятую функцию только после того, как 3,4 будет завершено. Но наблюдая за ними 5 до тех пор. – ReuseAutomator
Пробовал использовать ваш код для обмена сеансами WebDriver между функциями в OrderedTest для MsTest, не работает. Любая идея? Она работает в NUnit. – ReuseAutomator
- 1. Переопределить объявление шага в SpecFlow?
- 2. Передача данных между различными классами swift 2
- 3. типажей структуры с различными определениями
- 4. JQuery парения анимация только между различными классами
- 5. Приведения типов между двумя различными классами
- 6. CakePHP: Взаимодействие между различными файлами/классами
- 7. глобальные переменные между различными классами java
- 8. Перейдите к шагу Specflow из шага Определения
- 9. Взаимосвязь между независимыми классами и данными, используемыми различными классами
- 10. Как делиться различными объектами между некоторыми классами
- 11. Простая реализация операторов между различными классами C++
- 12. Поиск соединения между различными классами в JAR
- 13. значения Slider доступно между различными классами какао
- 14. Разница между различными классами для чтения файла
- 15. Передача переменных между определениями осевого окуня
- 16. Данные NSDictionary, разделяемые между классами
- 17. 1 struct с двумя различными определениями (или динамическими структурами)
- 18. Взаимодействие с различными классами
- 19. Тест TestNG для тестового параметра между различными классами тестов
- 20. Java сообщает поток из другого потока между различными классами
- 21. Отправка данных (в push) между различными классами в C#
- 22. Получить путь из файла свойств SpecFlow в определении шага
- 23. Как переключаться между различными классами в универсальном приложении iPhone/iPad?
- 24. Легко конвертировать между различными классами геометрии в C++?
- 25. Обработка глобальных переменных между различными классами и функциями в PHP
- 26. Каков наилучший способ обмена данными между различными классами тестов JUnit
- 27. Могу ли я распространять struts2 ActionErrors между различными классами действий?
- 28. Эффективное совместное использование JSP между различными классами действий Struts
- 29. python связь между различными классами и .py-файлами
- 30. Расширение StepDefinitions в Specflow
Я действительно ссылался на эту ссылку, но больше информации всегда оценили. http://stackoverflow.com/questions/2881685/in-specflow-how-can-i-share-data-between-steps-features – ReuseAutomator
, если это просто для Webdriver, вы можете попробовать одиночный класс для доступа к одному экземпляру во всех шагов, независимо от особенностей. – Kavan