Webdriver io 如何跨webdriverio规范共享/持久化数据/状态?

Webdriver io 如何跨webdriverio规范共享/持久化数据/状态?,webdriver-io,test-runner,specs,Webdriver Io,Test Runner,Specs,因此,WebDrivero test runner将为每个规范文件加载配置文件,这将阻止我们在这些规范(和会话)之间持久化/共享数据/状态 我想知道怎样才能解决这个问题。我想它应该是可以做到的,因为测试运行程序本身知道每次加载配置文件时将运行哪个规范,尽管配置文件实际上包含所有规范文件,如下所示 specs: [ 'test/spec/**' ], 只是不知道怎么做 底线是将数据保存在磁盘上的临时文件中。然而,这是非常丑陋的。不幸的是,原因是WebdriverIO中的

因此,WebDrivero test runner将为每个规范文件加载配置文件,这将阻止我们在这些规范(和会话)之间持久化/共享数据/状态

我想知道怎样才能解决这个问题。我想它应该是可以做到的,因为测试运行程序本身知道每次加载配置文件时将运行哪个规范,尽管配置文件实际上包含所有规范文件,如下所示

 specs: [
        'test/spec/**'
    ],
只是不知道怎么做


底线是将数据保存在磁盘上的临时文件中。然而,这是非常丑陋的。

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

  • HTTP
  • 插座
  • 文件
我在GragorJS上做了类似的事情(不久前):

我还看到了一项完全针对webdriverio实施的服务:


它也在引擎盖下使用Web服务器。

测试应该尽可能的原子化。我还认为您无法控制测试运行程序序列,这可能会导致您在测试中的依赖性破坏您的测试。话虽如此,您可以通过使用诸如密码或用户名之类的环境变量来共享数据。考虑到这一点,几乎所有的应用程序测试场景都需要用户注册,而注册可能是耗时的。因此,我们希望跨功能文件/会话重用用户。但是,由于测试运行程序重新加载配置文件(以及此后的所有内容),因此我们无法持久化/共享用户信息。这似乎是JavaScript特有的问题。例如,Java没有这个问题,因为整个测试运行通常共享同一个JVM,所以我们可以在测试运行中保存数据。谢谢。我认为最好的解决方案应该是使用webdriverio共享商店服务。然而,这只适用于v5,而我们使用的是v4。我最终使用本地文件来持久化状态,它工作得很好。