Как я могу запустить одну конкретную функцию CucumberJS с помощью GruntJS?

Я использую CucumberJS для запуска тестов в своем веб-приложении NodeJS.

На данный момент я могу запускать все свои задачи grunt, выполняя grunt, или только задачи CucumberJS, используя grunt cucumberjs.

Но теперь я хочу выполнять только определенные функции.

Например, скажем, у меня есть следующие файлы функций:

  • Вход.функция
  • Любимая.функция

Я хочу запускать только тесты избранных функций с помощью такой команды, как:

grunt cucumberjs Favourite

Это возможно?


Кстати, вот мой gruntfile.js:

'use strict';

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        ...
        cucumberjs: {
            src: 'features',
            options: {
                steps: 'features/step_definitions',
                format: 'pretty'
            }
        }
    });

    ...
    grunt.loadNpmTasks('grunt-cucumber');

    grunt.registerTask('default', [... 'cucumberjs']);
};

person Jonathan    schedule 04.02.2014    source источник


Ответы (3)


Наконец-то я нашел решение, которое работает достаточно хорошо, на основе тегов .

Поэтому для каждого из моих файлов функций я добавил тег.

Например, для Favorite.feature:

@favourite
Feature: Favourite
    As a user of the system
    I would like to favourite items

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

Я делаю это с помощью вызова grunt.option() в моем gruntfile:

cucumberjs: {
    src: 'features',
    options: {
        steps: 'features/step_definitions',
        format: 'pretty',
        tags: grunt.option('cucumbertags')
    }
}

Итак, теперь я могу запустить GruntJS из командной строки следующим образом:

grunt cucumberjs --cucumbertags=@favourite

И он будет запускать функцию только с тегом @favorite. Ура!

person Jonathan    schedule 04.02.2014

вот моя задача, которая позволяет вам фильтровать по feature.name:

https://github.com/webforge-labs/cuked-zombie/blob/master/tasks/cucumber.js (загрузите его в папку «задачи», и вы можете загрузить его с помощью: grunt.loadTasks('tasks'))

настройте его так (Gruntfile.js):

grunt.loadNpmTasks('grunt-cucumber');

grunt.initConfig({
  cucumberjs: {
    // config for all features when called with: `grunt cucumber`
    all: {
      src: 'features',
      options: {
        steps: "tests/js/cucumber/bootstrap.js",
        format: "pretty"
      }
    },

    // config for single features when called with `grunt --filter some-feature`
    features: {
      src: 'features',
      options: {
        steps: "tests/js/cucumber/bootstrap.js",
        format: "pretty"
      }
    }
  }
});

используйте его с:

grunt cucumber --filter post

который запустит post.feature (где-то в вашем каталоге функций)

С новой версией огурца-js его можно запускать по функциональной строке: https://github.com/cucumber/cucumber-js/pull/168

person pscheit    schedule 05.06.2014

Я не проверял это с grunt, но у огурца есть возможность выполнить сценарий без изменения файла корнишона. Просто вызовите cucumber-js --name "Scenario Name", поэтому я предполагаю, что отправка того же аргумента для его предоставления сделает свою работу.

person Hola Soy Edu Feliz Navidad    schedule 13.03.2020