Как передать данные (из примеров) одного файла объектов в другой файл объектов?

Когда я впервые запускаю файл объектов, я обновляю его поля во время выполнения. Значение того же поля требуется для передачи в другой файл объекта. Можно ли передать данные одного файла объектов в другой файл объектов с помощью Java?

feature file 1:
scenario outline: test xxx functionality
Examples :
|user|password|
|abc|pass|

feature file2:
Scenario Outline : test yyy functionality
Examples:
|user|password|
|    |        |

Здесь я хочу, чтобы данные, содержащиеся в файле возможностей 1, передавались в файл объектов 2, т. Е. Abc и pass должны быть скопированы в Примеры файлов объектов 2. Пожалуйста, предложите. Спасибо заранее!!

2 ответа

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

Так как же вы сможете повторно использовать настройки из первого файла функций во втором? Краткий ответ - нет. Вместо этого реализуйте помощника, который функции, которые должны быть настроены пользователем, могут использовать для подготовки тестируемой системы. Вызывайте этого помощника из каждого сценария, который нуждается в этой настройке перед ее выполнением. Это может показаться ненужной работой, но избавит вас от множества проблем со сценариями, которые зависят друг от друга и оставят вашу систему в неожиданных состояниях между выполнениями.

Строго говоря, вы не должны передавать данные из одного теста BDD в другой. Это лишило бы смысла проведение независимого юнит-теста BDD. В общем, программные модульные тесты должны быть независимыми друг от друга.

При этом вы, безусловно, можете сохранить одно состояние из одного определения шага, а затем использовать его еще раз:

@When("^I login with username \"(.*)\"$") 
public void enterUsername(String username) { 
    // do something with username

    // make a database call and insert the username in a temporary table
}

Затем, во втором файле объектов, вы можете запросить ту же таблицу и получить имя пользователя.

Возможно, это не совсем то, что вы имеете в виду, но общая идея состоит в том, чтобы просто сохранить какое-то состояние во время первого теста, который затем может быть использован во втором тесте.

Другие вопросы по тегам