我有一个表格,我正在填写和每一个测试用例需要不同的值的名字,姓氏和电子邮件。所以我在每个测试用例中创建env变量值,因为值每次都在变化,而不仅仅是cypress.json中的一个值是否有一种方法,我可以移动我下面声明的常量变量到柏树的一个部分,我可以把它移动到钩子部分?
//Second Test Case with Broker Company
it('demotestnifty1', {
env: {
firstname: 'Lambda',
lastname: 'Jonas',
email: 'ljrfnew@gemini.com',
}
}, function () {
const firstname = Cypress.env('firstname')
const email = Cypress.env('email')
const lastname = Cypress.env('lastname')
如果这些块中的所有测试的数据相同,则可以在describe()
或context()
级别定义它们。这与您在it()
块中所做的类似。
describe('some test', { env: { foo: 'bar' } }, () => {
it('logs foos value', () => {
cy.log(Cypress.env('foo'); // logs 'bar'.
});
});
您也可以将它们存储在cypress.json
或cypress.env.json
文件中。
// cypress.json
{
...
'env': {
'foo': 'bar'
}
...
}
// cypress.env.json
{
'foo': 'bar'
}
Cypress将自动拾取cypress.json
或cypress.env.json
中包含的变量,因此不需要额外的设置。注意:存储在cypress.env.json
中的环境变量将覆盖cypress.json
中的任何设置。
无论哪种方式,在it()
块的更高作用域定义变量后,您可以在块的before()
或beforeEach()
中设置它们。
// assumes value is set in cypress.json
describe('some tests', () => {
let foo: string;
before(() => {
foo = Cypress.env('foo');
});
it('logs foo value', () => {
cy.log(foo); // logs 'bar'
});
});
编辑:经过讨论,看起来实际的问题是如何设置和使用数据。我认为最简单的方法就是在beforeEach()
中设置数据。
describe('some test', () => {
let foo: string;
beforeEach(() => {
foo = Cypress.env('foo');
})
it('logs bar', { env: { foo: 'bar' } }, () => {
cy.log(foo); // logs 'bar'
});
it('logs baz', { env: { foo: 'baz' } }, () => {
cy.log(foo); // logs 'baz'
});
});
设置一个默认值也可能是有价值的,如果你有一个用例,你使用>50%的时间
...
let foo: string;
beforeEach(() => {
foo = Cypress.env('foo') ?? 'defaultValue'
});
...
创建一个用户数组并对其进行索引
// cypress.json
{
"env": {
"users": [
{firstname: 'Lambda', lastname: 'Jonas', email: 'ljrfnew@gemini.com'},
...
]
}
}
// test
it('tests with first user', () => {
const firstname = Cypress.env('users')[0].firstname
const lastname = Cypress.env('users')[0].lastname
...
})