gpt4 book ai didi

protractor - 为什么 cucumber Protractor 不会完全忽略没有要运行的标签的特征文件?

转载 作者:行者123 更新时间:2023-12-04 21:31:05 24 4
gpt4 key购买 nike

我正在使用 cucumber Protractor 框架来运行特征文件。

在我的 config.js 中,我有:

specs: [
"../../features/XXX1.feature",
"../../features/XXX2.feature",
...
"../../features/XXXn.feature",
],

cucumberOpts: {
tags: "@mytag",
},

在我的功能文件 XXX1.feature 中,我设置了这个标签“@mytag”:
  @mytag
Scenario Outline: my Flow
Given I am running test case one
....

但不在任何其他功能文件中,如 XXX2.feature、XXX3.feature 等。

我期望 Protractor 仅运行 XXX1.feature,而不运行 XXX2.feature。确实如此,当谈到 XXX2.feature 时,它​​ 启动浏览器 ,什么都不做,然后输出如下:
[14:35:53] I/testLogger - [chrome #01-2] PID: 14272
[chrome #01-2] Specs: D:\ptfbc\ui\features\XXX2.feature
[chrome #01-2]
[chrome #01-2] [14:35:44] I/hosted - Using the selenium server at http://127.0.0.1:4444/wd/hub
[chrome #01-2]
[chrome #01-2]
[chrome #01-2] 0 scenarios
[chrome #01-2] 0 steps
[chrome #01-2] 0m00.000s

但它仍然不够好。由于 XXX2.feature 中没有标签“@mytag”。它不应该跳过功能文件 XXX2.feature 并且根本不启动浏览器吗?

为每个没有“@mytag”的不合格功能文件启动浏览器也很耗时。

有没有一种配置方法可以避免这种情况?

编辑

功能和 hook.ts
capabilities: {
browserName: "chrome",
shardTestFiles: true,
maxInstances: 1,
'chromeOptions': {
'args': [
'disable-infobars'//,'headless=true','disable-gpu=true',
],
'prefs': {
'credentials_enable_service': false,
'download': {
'prompt_for_download': false,
'directory_upgrade': true,
}
}
}
},


const { BeforeAll, After, Status } = require("cucumber");
import * as fs from "fs";
import { browser } from "protractor";
import { config } from "../config/config";

BeforeAll({timeout: 300 * 1000}, async () => {
await browser.get(config.baseUrl);
});

After(async function(scenario) {
// screenShot is a base-64 encoded PNG
const screenShot = await browser.takeScreenshot();
this.attach(screenShot, "image/png");
});

最佳答案

对于 Protractor 执行特征文件的过程,可以分为两个阶段。

Protractor 为每个特征文件打开浏览器实例(创建 session )作为第一阶段,然后 Protractor 将运行任务交给 cucumber 作为第二阶段。

在第二阶段,cucumber 会检测特征文件是否满足标签。如果没有,Cucumber 将不会为特征文件运行任何场景,您将得到 0 scenarios, 0 steps在控制台中。

否则,cucumber 将执行那些满足特征文件中标签的场景。

因为 Protractor 在打开浏览器之前不负责检测特征文件是否满足标签,因此如您所见a browser opened and closed without any operation .

唯一的解决办法是给精密 specs在满足标签的 Protractor conf.js 中。为此,您需要根据标签过滤特征文件,然后将过滤结果分配给 specs .

我在 github 做了一个规范过滤器

// general config.js
exports.config = {
specs:[
'./features/**/*.feature'
],

cucubmerOpts: {
tags: '@abc'
}
};


// conf.js use my filter
var config = {
specs:[
'./features/**/*.feature'
],

cucubmerOpts: {
tags: '@abc'
}
};

exports.config = require('./spec.filter.js').filter_by_tag(config);

关于protractor - 为什么 cucumber Protractor 不会完全忽略没有要运行的标签的特征文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51491504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com