首页 > 解决方案 > 是否可以访问在 wdio.conf 中声明的变量?

问题描述

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

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

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

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


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

标签: javascriptnode.jsselenium-webdriverwebdriverwebdriver-io

解决方案


因此,如果您想在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 可能无法识别该变量,但您仍然可以使用它。


推荐阅读