0

我想以所需的顺序或顺序运行功能文件,例如:

 tags:"`@ProtractorScenario` or @CucumberScenario" 

但是黄瓜场景首先被执行。有人可以指导我吗?

注意:Cucumber 是根据文件夹中特征文件的字母顺序执行场景

此外,在超过 50 个特征文件的情况下,定义黄瓜特征文件排序的最佳方法是什么?

4

2 回答 2

3

为了获得可靠的测试,你的测试应该是独立的,而不是依赖于它们运行的​​顺序。原因是你的测试不应该依赖于系统处于某种状态,因为这会导致不稳定的测试。您的每个测试都应设置预期状态(和拆卸!),以便它们可以独立运行。

于 2018-03-13T12:06:27.363 回答
1

下面是量角器如何执行黄瓜特征文件:

  1. Protractor 找出 中指定的所有特征文件specs,将文件绝对路径保存到一个数组中,我们称之为feature_list.
  2. Protractor 启动会话(启动浏览器实例)
  3. Protractor 生成 Cucumber CLI 如下,执行 CLI 交出运行控制 cucumber:
    ./node_modules/bin/cucumber --require xxx --format xxx feature1,feature2,....featureN

    feature1,feature2,....featureN 计算方式为feature_list.join(',')

从上面我们可以了解到,改变订单的唯一机会是给feature_listprotractor一个 order-done specs

注意:每个成员都feature_list应该是单个功能文件的绝对/相对路径。folder并且wildcard不建议出现在路径中。

你可以从我的 github:spec.filter.js得到一个解决方案代码,它实现了:

  1. 通过 cucumberOpts.tags 过滤功能文件
  2. 按优先级排序上述步骤1的过滤结果

使用指南spec.filter.js

// protractor conf file
const specFilter = require('./spec.filter.js');

var config = {
    seleniumAddress: 'xxxxx',
    capabilities:'xxxx',

    framework: 'custom',
    frameworkPath: require.resolve('protractor-cucumber-framework'),
    ignoreUncaughtExceptions: true,

    specs: [
        './aa/**/*.feature',
        './bb/**/*.feature'
    ],

    cucumberOpts: {
        require: [
            'xxx'
        ],
        priorities: {
             // feature has tag @SPGC-21542 or @SPGC-21944 or @SPGC-21946
             // will has priority 1
            '1': ['@SPGC-21542 or @SPGC-21944', '@SPGC-21946'], 
             // feature has tag @SPGC-22055 will has priority 2, 
             // feature has heighest priority will put ahead at 
             // the `specs` list and get executed firstly.
            '2': ['@SPGC-22055']
        }
        tags: ""
    }

    ....
};

exports.config = specFilter(config);
于 2018-03-13T09:47:23.420 回答