赛普拉斯布尔断言
Cypress boolean assertion
我有一个显示查询结果的 table。
我使用这个检查 table 包含结果:
cy.get("table", {timeout: 60000}).find("tr[data-index]").should("have.length.gt", 1);
但是因为我有不同的数据源,所以我想同时检查两种情况:我得到一些结果的情况和我得到 0 个结果的情况。在后者中,我会检查是否存在消息“未找到结果”。我该如何做这个“双重”断言?
您可以使用 and() 进行多个断言,例如:
cy.get("table", {
timeout: 60000
}).find('tr[data-index]')
.should('have.length', 0)
.and('contain', 'No results found')
如果您想检查两个条件之一是否为真,您可以这样做:
cy.get("table", {
timeout: 60000
}).find('tr[data-index]').then(($ele) => {
if ($ele.length == 0 || $ele.text() == 'No results found') {
//Do Something
}
else {
//Do Something
}
})
在这里看看我的回答(抱歉,它很长)。
您可以使用 .should('statisfy', callback)
测试多个 OR 条件。
如果满足任一条件,则假设测试应该通过,
cy.get("table", {timeout: 60000})
.find("tr[data-index]") // presumes there's at least one row
.should("satisfy", ($els) => {
return $els.length > 1 || $els.text().includes('No results found');
});
与 Cypress 中的任何分支代码一样,命令只会成功或失败 - 您必须深入研究 jQuery 才能执行条件操作。
我有一个显示查询结果的 table。 我使用这个检查 table 包含结果:
cy.get("table", {timeout: 60000}).find("tr[data-index]").should("have.length.gt", 1);
但是因为我有不同的数据源,所以我想同时检查两种情况:我得到一些结果的情况和我得到 0 个结果的情况。在后者中,我会检查是否存在消息“未找到结果”。我该如何做这个“双重”断言?
您可以使用 and() 进行多个断言,例如:
cy.get("table", {
timeout: 60000
}).find('tr[data-index]')
.should('have.length', 0)
.and('contain', 'No results found')
如果您想检查两个条件之一是否为真,您可以这样做:
cy.get("table", {
timeout: 60000
}).find('tr[data-index]').then(($ele) => {
if ($ele.length == 0 || $ele.text() == 'No results found') {
//Do Something
}
else {
//Do Something
}
})
在这里看看我的回答
您可以使用 .should('statisfy', callback)
测试多个 OR 条件。
如果满足任一条件,则假设测试应该通过,
cy.get("table", {timeout: 60000})
.find("tr[data-index]") // presumes there's at least one row
.should("satisfy", ($els) => {
return $els.length > 1 || $els.text().includes('No results found');
});
与 Cypress 中的任何分支代码一样,命令只会成功或失败 - 您必须深入研究 jQuery 才能执行条件操作。