我有一个URL列表,需要检查每个URL上的相同元素。
但有两个条件:
- 所有工作都必须在1 it()中完成
- 测试不能在第一个错误的url后失败,但必须检查所有url,并仅在列表完成后显示结果
我尝试通过循环并尝试catch来完成测试(因为默认情况下没有软断言),但测试总是通过的,即使来自元素的文本是错误的(因为我不理解这是因为异步)。文章源自玩技e族-https://www.playezu.com/192609.html
let errorUrls = []
for (let url in data.PRODUCTS_PAGES) {
cy.visit(url)
cy.get('div.configurator-controls span').invoke('text')
.then(text => {
try {
expect(text).to.equal(data.PRODUCTS_PAGES)
} catch (e) {
errorUrls.push(e.message)
}
})
}
expect(errorUrls).to.be.empty
我该怎么做?文章源自玩技e族-https://www.playezu.com/192609.html
软件测试app功能文章源自玩技e族-https://www.playezu.com/192609.html 文章源自玩技e族-https://www.playezu.com/192609.html
未知地区 2F
如果你不想失败,不要使用 expect() 消息灵通的
注意,所有URL必须是相同的来源。
let errorUrls = []
for (let url in data.PRODUCTS_PAGES) {
cy.visit(data.PRODUCTS_PAGES[url])
cy.get(‘div.configurator-controls span’).invoke(‘text’)
.then(text => {
if (text !== data.PRODUCTS_PAGES[url]) {
errorUrls.push(e.message)
}
})
}
cy.then(() => {
cy.log(errorUrls)
expect(errorUrls).to.have.length(0)
})
未知地区 1F
你可以这样做:
let errorUrls = []
for (let url in data.PRODUCTS_PAGES) {
cy.visit(data.PRODUCTS_PAGES[url])
cy.get(‘div.configurator-controls span’).then(($ele) => {
if ($ele.text() == data.PRODUCTS_PAGES[url]) {
expect($ele.text()).to.equal(data.PRODUCTS_PAGES[url])
} else {
errorUrls.push(data.PRODUCTS_PAGES[url])
}
})
}
cy.then(() => {
expect(errorUrls).to.be.empty
})