Javascript 使用webdriverio的maxInstances时如何处理登录用户

Javascript 使用webdriverio的maxInstances时如何处理登录用户,javascript,webdriver-io,Javascript,Webdriver Io,现在,我尝试为我们的产品自动化测试更新webdriverio的maxInstances,但是我找不到一个好方法让不同的测试实例使用不同的用户来运行测试。有时不同的实例将使用同一用户登录,这将导致第一个登录实例会话超时 有人知道如何在这种情况下锁定/解锁用户吗?让我直截了当地说:您正在尝试运行多个实例,并且为生成的每个工作进程使用不同的参数,对吗?(例如:在您的情况下,对正在运行的流使用不同的、无冲突的用户帐户)。你是不是看起来像是自杀了 理论上,每个测试用例都应该具有以下三个特征: 小的 原

现在,我尝试为我们的产品自动化测试更新webdriverio的maxInstances,但是我找不到一个好方法让不同的测试实例使用不同的用户来运行测试。有时不同的实例将使用同一用户登录,这将导致第一个登录实例会话超时


有人知道如何在这种情况下锁定/解锁用户吗?

让我直截了当地说:您正在尝试运行多个实例,并且为生成的每个工作进程使用不同的参数,对吗?(例如:在您的情况下,对正在运行的流使用不同的、无冲突的用户帐户)。你是不是看起来像是自杀了


理论上,每个测试用例都应该具有以下三个特征:

  • 小的
  • 原子的
  • 自主的

❒ 可能的解决方案:

  • 等待审核>批准>合并>发布
  • 这可能需要一周,也可能需要一个月,甚至几个月。它甚至可能不是一个完全提供的功能,因为人们非常担心能够跨检查共享数据(人们最终会这样做)

    目前,框架中没有其他打包的功能允许您实现相同的结果。如果你能够,也许可以尝试通过改变测试方法来寻找解决方案


  • 重新组织测试逻辑:

    • 在功能文件(测试套件)中具有与特定检查(测试用例)关联的特定测试帐户
    • 如果你想非常认真地对待你的检查是否是原子的,那么就为一个特定的测试套件创建每个用户帐户(因为一个测试套件只在一个实例上运行,每次回归运行)
    • 组织测试套件,使特定的运行只使用特定的用户帐户,并使您的运行特定:将
      -suite
      开关添加到您的命令


  • 动态创建用户(测试前或测试运行期间)
  • 如果幸运的话,您可以访问一些后端调用,以将具有特定配置的用户推送到DB(请求后端开发人员的支持。为他们带来糖果!),然后创建一个脚本来生成此类用户

    或者,您可以创建一个
    自定义_命令
    ,以实现相同的效果。您在每个挂钩之前/之前调用您的

    !注意:不要忘记在每次
    after/afterEach
    钩子中进行清理

    缺点:

    • 原则相矛盾
    • 您将无法在生产环境中运行它们
    • 您可能会被后端标记为不断有新用户污染DBs(特别是如果您每天运行3-5次完整回归)

    您肯定可以找到一个解决方案来弥补这个框架的局限性。要有创意。一切顺利。干杯

    嗨,本杰明,你能提供一些关于你的问题的更多信息吗。您想在单个会话中使用不同的用户登录(可能是通过清除打开的浏览器缓存和cookie)?也许你可以试着解释一下当你手动尝试的时候你会做些什么。听起来更像是你在组织测试用例逻辑、钩子或者一些并发性问题上遇到了问题。就像上面@NaveenThiyagarajan建议的那样,编辑您的问题并添加相关的代码段。现在我只需在运行套件之前锁定/解锁用户。请参阅此处了解更多详细信息:
      suites: {
        user: [
          './test/features/user/AnalyticsChecks.js',
          './test/features/user/SitemapChecks.js'
        ],
        superuser: [
          './test/features/superuser/HeaderChecks.js',
          './test/features/superuser/FooterChecks.js'
        ],
        admin: [
          './test/features/admin/DropUserRoles.js',
          './test/features/admin/ClearCache.js'
        ],
        batman: [
          './i/am/the/Darkness.js'
        ],
      }