是否可以访问在wdio.conf中声明的变量?

时间:2019-10-19 12:57:29

标签: javascript node.js selenium-webdriver webdriver webdriver-io

在wdio.conf onPrepare中,我将所有功能文件存储在一个数组中。

let listOfFiles = fs.readdirSync(process.cwd() + '/features');
var featureFiles = [];

listOfFiles.map((file) => {
    featureFiles.push(file)
});

是否可以在另一个文件中使用featureFiles数组?


我想在执行期间生成功能文件列表,并将其分配给变量“ featureFiles”(已声明但没有任何开头的值)。 从到目前为止我所看到的,不可能在wdio.conf中执行此操作,因为您总是会在开始时获得为变量声明的值。在我的情况下,这是一个空数组。

2 个答案:

答案 0 :(得分:0)

是,在您此处发布的文件中添加

module.exports = featureFiles

在您要使用featureFiles的另一个文件中,您可以执行类似的操作

const featureFiles = require('path/to/your/first/file`);

答案 1 :(得分:0)

因此,如果您想在整个测试脚本中使用featureFiles,那么我们遵循的选项之一就是使用全局对象。

在您的wdio.conf文件中,尝试以下操作:

let featureFiles = [];
...
export.config = {
    ... //some line of code

    //OnPrepare hook
    onPrepare(){
        let listOfFiles = fs.readdirSync(process.cwd() + '/features');

        listOfFiles.map((file) => {
            featureFiles.push(file);
        });
    }

    //before session hook
    beforeSession(){
        global.featureFiles = featureFiles; //assigning the value of featureFiles to a global variable
    }
}

完成以上操作。变量featureFiles将在所有测试文件上可用。

注意:vscode intellisense可能无法识别该变量,但您仍然可以使用它。