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