如何访问文件中预定义的URL



如果我有30页要检查,例如,EN有免责声明,但其他29种语言没有,那么最好的方法是什么?例如,现在我有这样的:

const urls = ['http://google.com/en',
'http://google.com/bg'
]
describe('Disclaimer check', () => {
urls.forEach((url) => {
it(`Checks disclaimer text ${url}`, () => {
cy.visit(url)
cy.get('.Disclaimer').should('be.visible')
.and('contain', 'This is disclaimer.')
})
})
})

对于两个网站,在同一代码中定义它们是可以的,但其他检查免责声明是否存在的文件将有29个不同的URL。这里的最佳做法是什么?一个想法是将所有测试分开,但这意味着每个功能要进行30次测试,这听起来并不太好。

由于我正在使用的url使用了许多不同的值,所以用baseurl缩短它似乎也不合适。

提前谢谢!

你走在了正确的道路上。这将是一个很好的情况下使用柏树每一个。无论是否有一个或多个测试失败,Cypress都将运行所有测试。根据所需的时间,您可能需要将it.each测试分解为另一个文件。

import 'cypress-each' // can included in /support/index.js
describe('Disclaimer check', () => {
// baseUrl: http://google.com
const noDisclaimerUrl = [
'/bg',
// all other languages
]
it('/en does have disclaimer text', () => {
cy.visit('/en')
// test code
}) 
it.each((noDisclaimerUrl)
`%s does not have disclaimer text`
(url) => {
cy.visit(url)
// test code
})
})

将所有数据添加到一个数据对象中,导入该数据对象,然后使用Cypress Lodash迭代多次,就可以实现您的目标。

// data.js
// defining data
export const data =[{
"url": "www.google.com",
"hasDisclaimer": true
}, {
"url": "www.other-url.com",
"hasDisclaimer": false
}...
]

然后,您可以包装返回的数组,并在Cypress链中使用它。

import { data } from './path/to/data'
describe('Tests', () => {
Cypress._.times(data.length, (index) => {
const curr = data[index];
it(`Checks disclaimer text ${curr.url}`, () => {
cy.visit(curr.url).then(() => {
if (curr.hasDisclaimer) {
cy.get('.Disclaimer').should('be.visible')
.and('contain', 'This is disclaimer.');
} else {
// code for checking disclaimer does not exist
}
});
});
});
});

在Fixtures文件夹下创建一个urls.json文件,如下所示:

[
"https://google.com/en",
"https://google.com/bg",
"https://url3.com",
"https://url4.com"
]

现在,假设您知道哪些URL没有免责声明,您可以简单地将它们添加到If条件中,并应用not.exist断言。

import urls from '../fixtures/urls.json'
describe('Disclaimer check', () => {
urls.forEach((url) => {
it(`Checks disclaimer text ${url}`, () => {
cy.visit(url)
if (url == 'https://google.com/en' || url == 'https://url3.com') {
//Check for URL's where disclaimer doesn't exist
cy.get('.Disclaimer').should('not.exist')
} else {
//Check for URL's where disclaimer exists
cy.get('.Disclaimer')
.should('be.visible')
.and('contain', 'This is disclaimer.')
}
})
})
})

最新更新