WebdriverIO - 连续执行一些测试和并行执行其他测试
Posted
技术标签:
【中文标题】WebdriverIO - 连续执行一些测试和并行执行其他测试【英文标题】:WebdriverIO - Execute some tests consecutively and other tests in parallel 【发布时间】:2021-10-19 19:12:10 【问题描述】:我有一个包含许多测试的 WDIO 项目。有些测试需要连续运行,而其他测试可以并行运行。
我无法并行运行所有测试,因为需要连续运行的测试会失败,并且我无法连续运行所有测试,因为执行完成所需的时间太长。
出于这些原因,我需要找到一种方法来连续和并行地运行这些测试。是否可以配置此 WDIO 项目来完成此操作?
我通过 SauceLabs 运行这些测试并了解我可以将 maxInstances
变量设置为我希望并行运行的任意数量的 VM。是否可以将某些测试设置为使用较高的 maxInstance
而其他测试的 maxInstance
为 1?
或者也许有一种方法可以通过测试目录使用逻辑逻辑来并行运行某些测试并连续运行其他测试?
例如,如果我有这些测试:
'./tests/parallel/one.js',
'./tests/parallel/two.js',
'./tests/consecutive/three.js',
'./tests/consecutive/four.js',
我可以创建一些逻辑,例如:
if(spec.includes('/consecutive/')
//Do not run until other '/consecutive/' test finishes execution
else
//Run in parallel
如何配置此 WDIO 项目以连续和并行运行测试?谢谢!
【问题讨论】:
【参考方案1】:您可以创建 2 个单独的 conf.js
文件。
//concurrent.conf.js
exports.config =
// ==================
// Specify Test Files
// ==================
specs: [
'./test/concurrent/**/*.js'
],
maxInstances: 1,
并有一个用于并行。要减少重复,请创建一个共享的 conf.js
,然后简单地覆盖适当的值。
//parallel.conf.js
const config = require('./shared.conf');
config.specs = [
'./test/parallel/**/*.js'
],
config.maxInstances = 100,
然后当您运行测试时,您可以:
//parallel
wdio test/configs/parallel.conf.js
//concurrent
wdio test/configs/concurrent.conf.js
这里是an example 如何拥有一个共享的配置文件。还有other config files using the shared one
【讨论】:
非常感谢!!这绝对是我需要走的路。但是,还有最后一个问题:两个conf
文件必须在同一个进程中运行。我尝试了两种可能的解决方案:"test": "wdio parallel.conf.js --suite test && wdio consecutive.conf.js --suite test"
这两个conf
文件都运行,但一个接一个。 "test": "wdio parallel.conf.js --suite test & wdio consecutive.conf.js --suite test"
这会同时运行两个 conf
文件,但在两个单独的进程中。是否可以让两个文件同时在同一个进程中运行?再次感谢您!
@Brian 为什么它们必须在同一个进程中运行?
该项目利用自定义功能在执行结束时生成报告。由于创建了两个进程,两个conf
文件并行执行会完全破坏报告系统。让两个conf
文件在单个进程中运行可以解决此问题。你觉得这可能吗?
@Brian 嗯,如果您想正确报告,我的解决方案将无法正常工作。我想你有几个选择。首先,使用上面的解决方案,不要太担心报告输出。其次,尝试找到满足您需求的新解决方案,也许可能,我不确定如何。前者似乎是更好的选择,因为对我来说构建测试代码以满足报告需求很奇怪。控制台和我的 CI 系统通常会为我提供我需要的所有日志记录。
感谢您的帮助!我看看能不能搞定以上是关于WebdriverIO - 连续执行一些测试和并行执行其他测试的主要内容,如果未能解决你的问题,请参考以下文章
WebdriverIO - 在 Android 和 iOS 上并行运行相同的代码
运行 Gitlab CI 作业以使用 webdriverio 执行自动化测试时出现“加载共享库时出错:libnss3.so”
Webdriverio 使用 async/await - 推荐啥? [关闭]