调用Cypress方法时,如何自动递增变量



createUserPatch是用于创建新用户的API自定义命令。

你可以看到,我已经创建了一个变量">A";里面。

该变量用于正文电子邮件部分[a]+'freddie.doe@example.com','type': 'work','primary': true}]

我想找到一种自动增加变量"0"的方法A";每当我调用命令createUserPatch时。

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清除测试之间的变量,但在其他问题中建议了一些保存数据的方法(例如将数据写入文件)。

由于您已经使用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)
})

最新更新