如何在调用 Cypress 方法时自动增加变量?
How do I increment automatically a variable when calling a Cypress method?
createUserPatch 是用于创建新用户的 API 自定义命令。
你可以看到我在里面创建了一个变量“A”
变量用于邮件正文部分[a]+'freddie.doe@example.com','type': 'work','primary': true}]
我想找到一种方法,每当我调用命令 createUserPatch 时自动增加变量“A”。
Cypress.Commands.add('createUserPatch', (user) => {
var A = 1;
cy.request({
method: 'POST',
url: '/scim/v2/users',
qs: {
key : Cypress.env('apiKey')
},
body :{
schemas: user.schemas,
userName: user.userName,
emails: [{ 'value': [A]+'freddie.doe@example.com','type': 'work','primary': true}],
name : 'Maurice'
}
}).then(res => {
return res.body;
});
});
我在下面的测试中使用这个命令在每个之前。
let user = {
schemas:'["urn:ietf:params:scim:schemas:core:2.0:User"]',
userName: 'John',
userId: null,
groupID: null
};
describe('Deactivating a user ', () => {
beforeEach(() => {
cy.createUserPatch(user).then((newUser) => {
return user.userId = newUser.id;
});
});
....
每次我都运行这个测试。
我想增加电子邮件的价值。
第一次测试 -> 0freddie.doe@example.com
第二次测试 -> 1freddie.doe@example.com
第三次测试 -> 2freddie.doe@example.com
等...
赛普拉斯在测试之间清除变量,但在其他问题中建议了一些保存数据的方法(例如将数据写入文件)。
由于您已经使用 Cypress.env(name)
访问环境变量,因此您可以使用 Cypress.env(name, value)
来跟踪前缀。
Cypress.Commands.add('createUserPatch', (user) => {
let prefix = Cypress.env('emailprefix') || 0; // first time it may be undefined
// so "|| 0" initializes it
Cypress.env('emailprefix', ++prefix); // increment and save
cy.request({
...
emails: [{ 'value': prefix+'freddie.doe@example.com','type': 'work','primary': true}],
请注意,前缀值将在运行之间保留,这可能是也可能不是您想要的。
要在运行之间清除它,添加一个 before()
来重置值
before(() => Cypress.env('emailprefix', 0) );
beforeEach(() => {
cy.createUserPatch().then(console.log)
})
createUserPatch 是用于创建新用户的 API 自定义命令。
你可以看到我在里面创建了一个变量“A”
变量用于邮件正文部分[a]+'freddie.doe@example.com','type': 'work','primary': true}]
我想找到一种方法,每当我调用命令 createUserPatch 时自动增加变量“A”。
Cypress.Commands.add('createUserPatch', (user) => {
var A = 1;
cy.request({
method: 'POST',
url: '/scim/v2/users',
qs: {
key : Cypress.env('apiKey')
},
body :{
schemas: user.schemas,
userName: user.userName,
emails: [{ 'value': [A]+'freddie.doe@example.com','type': 'work','primary': true}],
name : 'Maurice'
}
}).then(res => {
return res.body;
});
});
我在下面的测试中使用这个命令在每个之前。
let user = {
schemas:'["urn:ietf:params:scim:schemas:core:2.0:User"]',
userName: 'John',
userId: null,
groupID: null
};
describe('Deactivating a user ', () => {
beforeEach(() => {
cy.createUserPatch(user).then((newUser) => {
return user.userId = newUser.id;
});
});
....
每次我都运行这个测试。 我想增加电子邮件的价值。
第一次测试 -> 0freddie.doe@example.com
第二次测试 -> 1freddie.doe@example.com
第三次测试 -> 2freddie.doe@example.com
等...
赛普拉斯在测试之间清除变量,但在其他问题中建议了一些保存数据的方法(例如将数据写入文件)。
由于您已经使用 Cypress.env(name)
访问环境变量,因此您可以使用 Cypress.env(name, value)
来跟踪前缀。
Cypress.Commands.add('createUserPatch', (user) => {
let prefix = Cypress.env('emailprefix') || 0; // first time it may be undefined
// so "|| 0" initializes it
Cypress.env('emailprefix', ++prefix); // increment and save
cy.request({
...
emails: [{ 'value': prefix+'freddie.doe@example.com','type': 'work','primary': true}],
请注意,前缀值将在运行之间保留,这可能是也可能不是您想要的。
要在运行之间清除它,添加一个 before()
来重置值
before(() => Cypress.env('emailprefix', 0) );
beforeEach(() => {
cy.createUserPatch().then(console.log)
})