我正在使用CucumberJS在我的NodeJS网络应用上运行测试。
目前,我可以使用grunt
执行grunt cucumberjs
或仅执行CucumberJS任务来执行所有繁琐的任务。
但现在我只想执行特定的功能。
例如,假设我有以下功能文件:
我想只使用如下命令运行收藏夹功能测试:
grunt cucumberjs Favourite
这可能吗?
BTW,这是我的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']);
};
答案 0 :(得分:4)
我终于找到了一个似乎运行良好的解决方案,基于tags。
因此,对于我的每个功能文件,我都添加了一个标记。
例如,对于Favourite.feature:
@favourite
Feature: Favourite
As a user of the system
I would like to favourite items
然后我使用GruntJS option指定我想通过命令行参数运行的标记。
我通过我的gruntfile中的grunt.option()
调用来执行此操作:
cucumberjs: {
src: 'features',
options: {
steps: 'features/step_definitions',
format: 'pretty',
tags: grunt.option('cucumbertags')
}
}
所以现在我可以从命令行运行GruntJS,如下所示:
grunt cucumberjs --cucumbertags=@favourite
它只会使用@favourite标记运行该功能。耶!
答案 1 :(得分:0)
这是我的任务,允许您按feature.name:
进行过滤 https://github.com/webforge-labs/cuked-zombie/blob/master/tasks/cucumber.js
(将其下载到" tasks"文件夹中,您可以使用以下代码加载它: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(功能目录中的某个位置)
使用新的cucumber-js版本可以通过功能线运行它: https://github.com/cucumber/cucumber-js/pull/168
答案 2 :(得分:0)
我还没有用咕tested声测试过它,但是Cucumber可以选择执行场景而不修改小黄瓜文件。只需调用cucumber-js --name "Scenario Name"
,因此我假设发送相同的参数来授予它权限即可。