我正在为以用户操作为中心的 WebUI 应用程序编写测试(freeipa)。
我想测试多个用户的添加和删除。为此,我需要确保之前运行的用户被清理,特别是因为在本地开发中,后端应用程序在不重新启动的情况下保持运行(在 Github-CI 中,它会为每次 PR 运行生成)。
相关片段:
Background:
Given I am logged in as "admin"
Given I am on "active-users" page
Scenario Outline: Add a new user
When I click on "Add" button
* I type in the field "User login" text "<userLogin>"
* I type in the field "First name" text "<firstName>"
* I type in the field "Last name" text "<lastName>"
* I type in the field "New Password" text "<password>"
* I type in the field "Verify password" text "<password>"
* in the modal dialog I click on "Add" button
Then I should see "<userLogin>" entry in the data table
Examples:
| userLogin | firstName | lastName | password |
| testuser1 | Arthur | Dent | ILoveKlingonPoetry42 |
| testuser2 | Banana | Bread | FishAndChips097 |
| testuser3 | Cypress | Gateway | TestingIsFun73 |
Scenario: Delete a user
Given I should see "testuser1" entry in the data table
When I select entry "testuser1" in the data table
And I click on "Delete" button
Then I see "Remove active users" modal
When in the modal dialog I check "Delete" radio selector
And in the modal dialog I click on "Delete" button
Then I should not see "testuser1" entry in the data table
我尝试过的:
Before
挂钩
Background
之前执行的(在管理员登录之前),因此失败了Background
块中
Delete a user
失败Add a new user
场景中的第一步:
我应该如何重构/排序我的测试,以便以空表开始
Add a new user
,但保留添加的用户以进行删除?
如果这违反了耦合原则,是否可以在另一个场景中重用场景?
谢谢!
由于您有 3 个示例用户,您是否只能在用户数等于 3 时运行“clean state”?或者仅当
testuser2
和 testuser3
存在时,因为 Scenario: Delete a user
将处理 #1。
将步骤放在背景中最后。
还有带有标签的条件
Before()
,但我不认为它直接插入到上面的测试套件中(因为Scenario Outline: Add a new user
运行了三次)。
Before({ tags: "@clean" }, function () {
loginAdmin()
cleanState()
})
另一件事要考虑的是丝柏/摩卡
before()
,而不是黄瓜Before()
,它相当于beforeEach()
。
在
cypress/support/e2e.ts
before(() => {
loginAdmin()
cleanState()
})