Automation 将测试数据提供给夜视

Automation 将测试数据提供给夜视,automation,nightwatch.js,Automation,Nightwatch.js,我试图向夜视提供测试数据,但我不知道如何提供。如何为夜视测试提供任何动态测试数据 我不想将值硬编码到代码中。我想从文件中提供它 编辑: 由于您在一条评论中提到要从文件中读取值,因此我建议您通过伪JSON(实际上是.js)进行读取。这也是我在公司申请的解决方案 我有多个json文件,其中包含我不想在代码中包含的某些测试数据。它们的基本结构如下所示: module.exports = { WHATEVER_IDENTIFIER_I_WANT: 'Some shiny value' } cons

我试图向夜视提供测试数据,但我不知道如何提供。如何为夜视测试提供任何动态测试数据

我不想将值硬编码到代码中。我想从文件中提供它

编辑:


由于您在一条评论中提到要从文件中读取值,因此我建议您通过伪JSON(实际上是.js)进行读取。这也是我在公司申请的解决方案

我有多个json文件,其中包含我不想在代码中包含的某些测试数据。它们的基本结构如下所示:

module.exports = {
  WHATEVER_IDENTIFIER_I_WANT: 'Some shiny value'
}
const STATIC = require('path/to/static/file')
…
.setValue('selector', STATIC.WHATEVER_IDENTIFIER_I_WANT)
“我的页面”对象包含如下行:

module.exports = {
  WHATEVER_IDENTIFIER_I_WANT: 'Some shiny value'
}
const STATIC = require('path/to/static/file')
…
.setValue('selector', STATIC.WHATEVER_IDENTIFIER_I_WANT)
是的,它不是非常复杂,但它实现了目的

如果您不想使用
module.exports
.js
,您仍然可以使用一些节点方法来加载和解析JSON。例如

  • /fs.readFile(加载JSON文件)
    const file=fs.readFileSync('path/to/file')
  • (检索JavaScript对象)
    const STATIC=JSON.parse(文件)

希望这对你有用:)

我也遇到过同样的问题。目前,我的设置如下: 原始数据在excel表格中。我使用node.js将excel工作表转换为json文件。然后在nightwatch中使用json数据

以下是在nightwatch中读取json文件的代码:

module.exports = {
    tags: ['loginpage'],
    // if not regular size logout button is not visible

    'Login' : function (client) {
        var credentials;
        try{
            credentials = require('./path/to/inputJsonData.json');
        } catch(err) {
            console.log(err);
            console.log ('Couldn\'t load the inputJsonData file. Please ensure that ' +
                'you have the inputJsonData.json in subfolder ./path/to ' +
                'in the same folder as the tests');
            process.exit();
        }
以下是使用其中数据的代码:

    client
        .url(credentials.url)
        .waitForElementVisible('body', 1000)
        .assert.title('Sign In Home Page')
        .login(credentials.username,credentials.password)
        // some more steps here 
        .logout()
        .end();
    }
};
inputJsonData.json数据

{
    "url": "http://path/to/my/input/credentials/file",
    "username": "yourUserName",
    "password": "yourPassword"
}
我的问题: 当文件具有以下格式时,如何查找从文件读入json对象的元素计数

[
 {
  ....
 },
 {
  ....
 },
 .....
 {
  ....
 }
]
我获取元素数的尝试失败:JSON.parse(company).count其中company是另一个JSON读取文件,如上面代码中的凭据

回答:使用标准javascript数组属性长度公司。长度

简洁地回答了有关文件使用的问题。要补充的是,如果您不是字面上的非“代码”文件,而是简单地使用不同的位置来存储值,那么最常见的方法是使用

您可以在nightwatch.json

"test_settings" : {
    "default" : {
        "selenium_port"  : 4444,
        "selenium_host"  : "localhost",
        "silent": true,
        "globals" : {
            "VARIABLE_1" : "i'm a variable",
            "VARIABLE_2" : "i'm a variable too"
        },      
        "desiredCapabilities": {
           "browserName": "chrome",
           "javascriptEnabled": true,
           "acceptSslCerts": true
       }
    },
    "other_environment" : {
        "globals" : {
            "VARIABLE_1" : "i'm a different variable",
            "VARIABLE_2" : "i'm a different variable too"
您可以在测试中使用它们,例如

.url(browser.globals.VARIABLE_1)
注意,在上面的内容中,您可以在不同的环境下拥有多组全局变量。这样做的好处是,通过运行
nightwatch-e“my desired environment”
,您可以拥有多个设置并使用所需的设置

类似地,这可以通过将数据数组放入globals文件(例如globals.js)并在“globals.path”中引用来实现

如果你真的想进入它,你甚至可以将你的变量存储在global.js中,然后使用“fs”库将值写入一个文件,然后让你的测试从那里读取。如果你想问的话,我建议你问一个新问题


希望这会增加一些东西:)

在我的例子中,我刚刚创建了一个读取变量、数据等的函数


此处的更多细节:

一些您已经尝试过的示例和一些您正在尝试完成的细节将非常有用。我是javascript初学者,因此还没有任何示例。好的,您正在尝试创建什么样的动态测试数据?用户名、密码、随机数、信用卡号码、电话号码?给我一些你想做的事情的细节。如果没有这些,就很难给你一个如何让它工作的建议。登录页面的动态测试数据,如用户名和密码。