gpt4 book ai didi

cypress - 在 beforeEach 中清理数据库状态?

转载 作者:行者123 更新时间:2023-12-05 06:22:27 25 4
gpt4 key购买 nike

Using after or afterEach hooks ,建议在beforeEachbefore中清理server/db状态。我理解基本原理,但我认为文本缺少一些实际用例。这是一个我不知道如何按照最佳实践解决的用例。

假设我正在测试我自己的 github 克隆。为了让我的测试有一个干净的环境,我希望 Cypress 使用一个干净的临时用户和一个干净的临时存储库。为避免针对同一服务器的多个 Cypress 实例之间发生冲突(例如,多个前端开发人员并行测试他们的更改),应该有一个用户和一个存储库专用于每个 Cypress 实例。这可以通过生成具有众所周知的随机 ID(例如,temp-user-13432481temp-repo-134234)的用户和存储库来实现。清理数据库中的困惑只是删除 temp-* 数据库。

问题是何时清理。如果按照建议在 beforeEach() 中完成清理,则在 Cypress 实例中运行测试将删除并行运行的其他 Cypress 实例的数据。

我是否缺少一个明显的解决方案?人们通常如何清理数据库中的临时测试数据?

最佳答案

显而易见的答案是不以分布式方式对单个远程服务器运行测试(而是在每个客户端本地运行数据库服务器),但由于这不是您问题的答案,这里有一些想法:

  1. 设置一个 cron 作业,在每天结束时清理旧的测试库/用户。

    如果您只清理早于例如几个小时,它将避免清理可能仍被运行测试使用的资源。

    您必须确保 ID 是随机的并且足够大(即具有足够的熵),即使您暂时不清理它们也不会遇到碰撞。

  2. 让每个客户端(即运行测试的 PC)使用一个指纹,您将使用该指纹为数据库中的存储库/用户命名空间,并在每次测试运行之前清理它们。

    这样,每个客户端只会清理自己的资源。

我倾向于解决方案 (1)。

关于cypress - 在 beforeEach 中清理数据库状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59285314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com