将赛普拉斯数据库查询输出对象获取到变量中
Get cypress database query output objects in to variables
我有一个用 mysql 节点模块设置的 cypress 测试。当我 运行 波纹管提到测试时,它给出的输出如下。
const executeQuery = (query) => {
cy.task('DBQuery', query).then(function (recordset) {
var rec = recordset
cy.log(rec)
})
}
查询:
select *
from Users
where email = 'sheeranlymited@lymitedtest.com'
输出:记录 [对象{23}]
查询:
select firstname
from Users
where email = 'sheeranlymited@lymitedtest.com'
输出:日志 [{firstname: Edward}]
而不是 cy.log(rec)
我想获取 23 列的输出以根据列名分配给不同的变量。
如果有人能帮我解决这个问题,我将不胜感激...
您可以在 js 中使用 Object.values
从您的对象中检索值
假设您需要提取第 3 列的值,那么您的代码将如下所示,
cy.task('DBQuery', query).then(function (recordset) {
var rec = recordset
const results = Object.values(rec[0])
// results[index of the column] will output the results
cy.log(results[3])
})
我们可以做一些小修改,让您的任务更轻松,
cy.task('DBQuery', query).then(function (recordset) {
var rec = recordset
const Values = Object.values(rec[0]);
const keys = Object.keys(rec[0]);
let result = {};
let index = 0;
keys.forEach(key => {
result[keys[index]] = Values[index];
i++
})
//result.firstName will give you your results
cy.log(result.firstName);
})
这样,我们就生成了以键为列名的键值对。所以你可以使用列名来查找值。
希望这对您有所帮助。
干杯。
我有一个用 mysql 节点模块设置的 cypress 测试。当我 运行 波纹管提到测试时,它给出的输出如下。
const executeQuery = (query) => {
cy.task('DBQuery', query).then(function (recordset) {
var rec = recordset
cy.log(rec)
})
}
查询:
select *
from Users
where email = 'sheeranlymited@lymitedtest.com'
输出:记录 [对象{23}]
查询:
select firstname
from Users
where email = 'sheeranlymited@lymitedtest.com'
输出:日志 [{firstname: Edward}]
而不是 cy.log(rec)
我想获取 23 列的输出以根据列名分配给不同的变量。
如果有人能帮我解决这个问题,我将不胜感激...
您可以在 js 中使用 Object.values
从您的对象中检索值
假设您需要提取第 3 列的值,那么您的代码将如下所示,
cy.task('DBQuery', query).then(function (recordset) {
var rec = recordset
const results = Object.values(rec[0])
// results[index of the column] will output the results
cy.log(results[3])
})
我们可以做一些小修改,让您的任务更轻松,
cy.task('DBQuery', query).then(function (recordset) {
var rec = recordset
const Values = Object.values(rec[0]);
const keys = Object.keys(rec[0]);
let result = {};
let index = 0;
keys.forEach(key => {
result[keys[index]] = Values[index];
i++
})
//result.firstName will give you your results
cy.log(result.firstName);
})
这样,我们就生成了以键为列名的键值对。所以你可以使用列名来查找值。
希望这对您有所帮助。
干杯。