在cypress测试运行中,如何在并行运行期间使用多个用户登录系统?



如何在cypress-cucumber-preprocessorBDD框架下运行multiple用户的并行cypress测试?我不能在并行运行中使用单用户,因为最新的会话将kicked out现有的柏树测试运行和现有的测试运行将失败。

请注意:在我们的web应用程序中,如果用户访问系统并登录到web应用程序并执行一些操作。同时在不同的浏览器中访问系统,并以相同的用户登录。第一个会话将被注销。

我们正在使用

  1. bitbucket都
  2. jenkins CI/CD管道
  3. <
  4. 码头工人容器/gh>

如果你碰巧遇到类似的

自动化文件夹结构:

tests/
cypress/
integration
/folder1/
test1.feature
/folder2/
test2.feature
test3.feature
/folder3/
test4.feature
/folder4/
test5.feature
/folder5/
test6.feature
/folder6/
test7.feature

如果您只需要多个用户,但是测试是完全独立的,那么您可以在一个fixture中拥有多个用户凭据,

例如

// users.json
[
{ 
userId: 1,
username: 'John',
password: 'abc'
},
{ 
userId: 2,
username: 'Jack',
password: 'def'
},
... // and so on
]

每个测试将在开始时选择一个不同的用户

// test1
import { Given } from "@badeball/cypress-cucumber-preprocessor";
Given('User has logged in with unique credentials', () => {
before(() => {
cy.fixture('users.json').then(users => {
const user = users[0]
cy.login(user.username, user.password)
})
})
// test2
import { Given } from "@badeball/cypress-cucumber-preprocessor";
Given('User has logged in with unique credentials', () => {
before(() => {
cy.fixture('users.json').then(users => {
const user = users[1]
cy.login(user.username, user.password)
})
})

然后,如果并行运行时测试重叠,服务器会看到不同的用户登录。


或者使用CucumberBefore钩子

import { Before } from "@badeball/cypress-cucumber-preprocessor";
Before(function () {
cy.fixture('users.json').then(users => {
const user = users[0]
cy.login(user.username, user.password)});
})
})

您可以让每个测试为每个测试创建一个具有适当权限的新用户,使用api运行以更快地执行。您可能需要一个单独的清理过程来删除所有已创建的用户。这样做的好处是为每个测试真正拥有一个干净的状态,而不必担心用户帐户。

相关内容

  • 没有找到相关文章

最新更新