Тестирование сценария с несколькими данными ввода-вывода в формате BDD (Squish)/тестирование на основе данных в формате BDD

Ниже приведен пример проекта, над которым я работаю.

Сценарий: Тестирование приложения Adder в BDD.

Данное приложение Adder работает, когда заданы два входных значения, соответствующие которым мы получаем вывод. Затем проверьте поле вывода.

Я могу выполнить тест с набором из двух входных значений.

Можно ли выполнить один и тот же сценарий с другим набором входных значений.


person Sam    schedule 14.03.2016    source источник


Ответы (2)


Да, это возможно. Решение называется Scenario Outline F.e.

Scenario Outline: Adder application to be tested in BDD.
Given Adder application is running 
When <input_values> are given corresponding to which we get an output. 
Then Validate the <output> field.      

Examples:
| input_values | output  |
| foo          | bar     |
| new foo      | new bar |

Для получения дополнительной информации см. ссылку на документацию

person Igor Lantushenko    schedule 14.03.2016
comment
Привет, Игорь, большое спасибо. Это сработало для меня, но я столкнулся с небольшой проблемой: ДАННАЯ часть выполняется для каждого значения, указанного в примере, т.е. приложение запускается снова и снова. В то время как я хочу, чтобы приложение быть запущен только один раз. Любое решение? - person Sam; 18.03.2016
comment
хм, в качестве быстрого решения вы можете перенести шаг загрузки приложения в фоновую часть. Попробуйте Background: Given Adder application is running см. cucumber.io/docs/reference#background Но: 1) Я не уверен что эта функция умеет в сквоше. 2) фоновые шаги будут выполняться перед каждым сценарием - person Igor Lantushenko; 18.03.2016
comment
Эй, фоновый тег не сработал. Затем я попытался упомянуть оператор startApplication (Add.jar) в моем файле BDD_hook. OnFeatureStart(function(context) { startApplication(Add.jar); });... В этом случае, поскольку функция выполняется только один раз, следовательно, приложение также запускается один раз с функцией, а не при каждом вызове сценария. - person Sam; 22.03.2016
comment
Что ж, тогда поздравляю — вы нашли решение :) - person Igor Lantushenko; 22.03.2016

Если вы хотите это для каждого сценария, используйте хук OnScenarioStart...

Вы также можете сделать это без схемы сценария, используя данные таблицы:

Scenario: Adder application to be tested in BDD.
Given Adder application is running 
Then for each input value provided, verify the output value.
    | inputvalue | outputvalue |
    | foo | bar |
    | new foo | new bar |

Вы получаете доступ к таблице на своем шаге, используя объект context.table

Then("for each input value provided, verify the output value", function(context) {
    var table = context.table;

    // Skip initial row with column headers by starting at index 1
    for (var i = 1; i < table.length; ++i) {
        var inputValue = table[i][0];
        var outputValue = table[i][1];
        // make magic happen
    }
});
person redusek    schedule 25.08.2017