【问题标题】:How can I share/persist data/status across webdriverio specs?如何跨 webdriverio 规范共享/保存数据/状态?
【发布时间】:2019-11-30 04:40:40
【问题描述】:

根据https://github.com/webdriverio/webdriverio/issues/1500,webdriverio 测试运行器将为每个规范文件加载配置文件,这会阻止我们在这些规范(和会话)之间持久化/共享数据/状态。

我想知道如何解决它。我想它应该是可行的,因为测试运行器本身知道每次加载配置文件时它将运行哪个规范,尽管配置文件实际上包含所有规范文件,如下所示

 specs: [
        'test/spec/**'
    ],

只是不知道怎么做。

底线是将数据保存在磁盘上的临时文件中。但是,这很丑陋。

【问题讨论】:

  • 测试应该尽可能atomic。我也不认为您可以控制测试运行程序的顺序,这可能会导致您在测试中的依赖关系破坏您的测试。话虽如此,您可以通过使用密码或用户名等 ENV 变量来共享数据。
  • 不,我不想更改测试运行程序序列。考虑到这一点,几乎所有应用程序测试场景都需要用户已经注册,而注册可能很耗时。因此,我们希望跨功能文件/会话重用用户。但是,由于测试运行程序重新加载配置文件(以及之后的所有其他内容),我们无法持久/共享用户信息。这似乎是 JavaScript 特定的问题。例如,Java 没有这个问题,因为通常整个测试运行共享同一个 JVM,所以我们绝对可以在测试运行中持久化数据。

标签: webdriver-io test-runner specs


【解决方案1】:

不幸的是,WebdriverIO 中的每个并行线程都在单独的 nodejs 进程中运行,因此它们没有共享内存。在工作人员之间共享数据的方式:

  • HTTP
  • 套接字
  • 文件

我为 ProtractorJS 做了类似的事情(前段时间):https://gist.github.com/Xotabu4/011d728752507f6a2d4775fd8659cfc4

我还看到了一项专门为 webdriverio 实现的服务:https://webdriver.io/docs/shared-store-service.html

它还在后台使用网络服务器。

【讨论】:

  • 谢谢。我认为最好的解决方案应该是使用 webdriverio Shared Store Service webdriver.io/docs/shared-store-service.html。但是,这仅在我们使用 v4 时适用于 v5。我最终使用本地文件来保持状态并且它工作正常。
猜你喜欢
  • 2012-10-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 2022-11-12
相关资源
最近更新 更多