【问题标题】:Is it possible to uninitialize/reinitialize/delete role in testcafe E2E test?是否可以在 testcafe E2E 测试中取消初始化/重新初始化/删除角色?
【发布时间】:2019-06-04 22:32:43
【问题描述】:

我正在使用 TestCafe 进行 E2E 测试。

场景:我正在运行测试使用测试运行。例如,第一次测试运行在 Firefox 浏览器中执行测试,然后在 chrome 中运行(这只是示例,我也有需要在不同阶段运行 e2e 测试的情况)。我使用了一个角色。当一个测试运行完成并且它正在运行另一个测试运行时,角色 cookie 仍然存在,并且它充当用户登录。

预期行为:每次运行都应重新初始化角色。

有什么方法可以清除 cookie 或取消初始化角色吗?

【问题讨论】:

    标签: testing automated-tests e2e-testing testcafe jquery-cookie


    【解决方案1】:

    Role 功能的创建是为了通过保存 cookie 和 (local|session)Storage 的状态并将它们应用于第二次和后续角色调用来节省时间。如果您想对每个测试执行登录操作,只需将操作从您的角色转移到单独的函数并调用此函数而不是角色。如果您的目标不同,请添加说明当前行为的示例并描述您希望完成的任务。

    User Roles documentation.

    【讨论】:

    • 我的问题和你刚才提到的有点不同。我必须为不同的阶段运行测试,例如 dev、int、cons 等。所以这个阶段的每个阶段都为我运行不同的测试。每个测试运行都有 n 个测试用例在运行。我的问题不是当我在单阶段运行时,我在 dev 中初始化了一个角色,当我尝试使用 int 运行另一个测试运行时,角色会话仍然来自 dev,因此它不会登录第一次分配角色,而是使用旧会话。虽然 url 不同(使用函数调用 url),但由于角色名称相同,因此使用相同。
    • 您可以尝试将您的阶段拆分为灯具:dev、cons,等等。然后,您可以使用夹具钩子机制:devexpress.github.io/testcafe/documentation/test-api/… 您可以在fixture.before 钩子上创建一个新角色。因此,您的角色将在测试运行期间将其数据保存在同一个夹具中,但将在下一阶段重新初始化。
    • 但是对于 dev、cons 等运行相同的测试,为什么要将它们分开?阶段只是一个例子,例如,我已经为不同国家/地区的站点进行了测试。是否无法重新初始化角色,或删除此 cookie。 testcafe 中的角色文档没有提到这样的事情。这件事会让事情变得容易。目前的解决方法是根据阶段在数组中创建单独的角色变量。
    • 角色机制不用于清除已初始化的角色。我认为您的解决方法适合此问题。
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多