【发布时间】:2021-09-27 16:07:12
【问题描述】:
我使用 NodeJS、Protractor、Jasmine Framework 和 SauceLabs 设置了多个自动化脚本。
每个脚本都在单独的 .JS 文件中,它从 .JSON 文件中读取数据。我在 JSON 文件中定义了登录凭据和所有其他必要数据。
multiCapabilities: [{
browserName: 'chrome',
version: 'latest',
platform: 'Windows 8',
name: "tests",
splitTestsBetweenCapabilities: true,
acceptInsecureCerts: true,
cssSelectorsEnabled: true,
shardTestFiles: true,
maxInstances: 5,
}],
maxSessions: 5,
使用这个配置,我可以触发 5 个 Chrome 浏览器实例并运行 5 个不同的脚本,每个脚本都自己获取数据。
问题是我需要为每个脚本使用 20 个登录凭据的轮换列表。我不确定是否有任何软件包已经这样做了。
我应该如何处理这个问题,以便每个脚本都可以使用一个唯一的用户名和密码? 每个脚本都应该能够选择一个随机凭证,而其他脚本在该脚本完成其运行之前不能使用它。
【问题讨论】:
-
您需要某种集中式存储。但是为什么你需要轮换这些登录呢?为什么每次运行都要使用不同的登录名来运行测试? ?这背后的原因是什么?由于量角器使用多个进程,因此很难在它们之间同步数据(这是很大的努力,但收益不大。)我不明白为什么你必须轮换。
-
我可以想到将包含所有凭据的文件复制到 tmp 目录。然后,在测试中,您访问该文件并使用其中一个登录名。测试完成后,它会再次将使用过的登录名记录到文件中。为了同步它,可以试试这个 npm 包来锁定它:=> npmjs.com/package/lockfile ,所以在访问它时锁定文件,并在你的“readFile()”函数中添加一个适当的轮询机制,以防它在那一刻被锁定! .如果你愿意,我可以给你举个例子。,0
-
另一种方法是通过
process.env来实现,但我猜mutlipleinstances会产生不同的进程,因此子进程无法写入相同的process.env--
标签: javascript node.js jasmine protractor saucelabs