我在所有网页上都有一个小的聊天图标。如何用赛普拉斯写作?
小聊天图标具有Widget类,应该在所有页面中找到
我可以在下面这样写,但是我想知道是否还有其他方法可以消除重复的should('have','Widget')
,在这一点上,我什至不确定使用should('have','Widget')
是正确的做法但是可以。
cy.get('.pageA').should('have.value', 'Widget')
cy.get('.pageB').should('have.value', 'Widget')
cy.get('.pageC').should('have.value', 'Widget')
cy.get('.pageD').should('have.value', 'Widget')
我正在将Cypress与黄瓜一起使用,请多谢
答案 0 :(得分:2)
如果断言在单个测试中排列,则可以采用数据驱动的方法
['.pageA', '.pageB', '.pageC', '.pageD'].forEach(page => {
cy.get(page).should('have.value', 'Widget')
})
或者如果您要进行个别测试
['.pageA', '.pageB', '.pageC', '.pageD'].forEach(page => {
it(`Page ${page} has the icon`, () => {
cy.get(page).should('have.value', 'Widget')
})
});
来自Cypress tutorial的更具体的示例,
it.only('Handles filter links', () => {
const filters = [
{link: 'Active', expectedLength: 3},
{link: 'Completed', expectedLength: 1},
{link: 'All', expectedLength: 4}
]
cy.wrap(filters)
.each(filter => {
cy.contains(filter.link)
.click()
cy.get('.todo-list li')
.should('have.length', filter.expectedLength)
})
})
答案 1 :(得分:1)
您可以使用custom commands来避免编写可重用的代码。
您可以转到cypress/support/commands.js
并输入:
Cypress.Commands.add('checkChatIcon', (page) => {
cy.get(page).should('have.class', 'Widget')
})
在测试中,您可以编写:
cy.checkChatIcon('.pageA')
cy.checkChatIcon('.pageB')
答案 2 :(得分:0)
您应该考虑将图标放置在所有页面上并进行测试的机制。
如果您必须对所写的每个页面进行某些操作以确保该图标存在,那么您将需要测试每个页面。
如果您进行了某些操作,以便您自动编写的每个页面都带有图标,那么您只需测试已完成的操作即可。在这种情况下,编写单元测试来测试它可能会更容易,因为在平台代码层次结构上它可能比呈现单个页面更高。
您可以考虑的其他方法是测试每个页面的替代方法
通常,对每个页面进行测试以获取共同的内容是非常差的做法。它会产生大量的运行时开销,而这些开销会大规模扩展并且几乎没有收益。