Protractor - 如何为不同的测试重用相同的规范文件

标签 protractor angularjs-e2e

在我的 Protractor conf.js 文件中,我想多次重复使用相同的规范文件;不过,这似乎不可能。

一些背景:

我们正在从 JSON 文件读取测试用例,启动报告,然后测试网格结果和各种 DOM 元素。

所有报告都具有相同的格式。主要区别在于报告标题、数据列、实际数据结果等。

因此,在我的 conf.js 文件中,理想情况下我想多次重复使用相同的规范文件 - 但我的理解是我不能这样做。

例如,我的规范数组:

specs: [
      'spec/report1-spec.js',
      'spec/report-grid-details-spec.js',
      'spec/report2-spec.js',
      'spec/report-grid-details-spec.js',
      'spec/report3-spec.js',
      'spec/report-grid-details-spec.js',
 ]

我读过这篇文章 ( http://ramt.in/how-to-run-identical-jasmine-specs-multiple-times-with-protractor/ ),您可以将规范文件移动到 node 模块,但是 1) 我不想移动那里的所有规范文件,并且 2) 当我将一个规范文件移动到模块导出文件中时,它无论如何都不起作用。

如果我做不到,那么我只需将 report-grid-details-spec.js 代码移动到一个通用的page object 文件中并调用需要时随时使用。

只是想知道是否有人找到了解决方案,可以解决在一个 conf.js 配置中多次重复使用规范文件的问题。

谢谢你, 鲍勃

最佳答案

If I can't do it, then I'll just move my report-grid-details-spec.js code into a common page object file and call it whenever it's needed.

这可能是解决该问题的最简单方法。不过,我喜欢将规范放入模块的想法 - 这对整体的可重用性是有好处的。

问题是,jasmine 不允许在单个测试运行中执行相同的测试。而且,据我了解,没有简单的方法可以改变这种行为。

可能的解决方法之一是完全重新启动 Protractor,从而重新创建 jasmine 测试环境,以便下一个 report-grid-details-spec.js 将在新的 jasmine 环境中运行 -这是protractor-flake project用于重试失败的测试(它基本上通过命令行将失败的规范作为逗号分隔列表传递给 specs 参数 source 来重新启动 protractor )。

关于Protractor - 如何为不同的测试重用相同的规范文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41884479/

相关文章:

javascript - Angular Protractor executeScript/executeAsyncScript : Maximum call stack size exceeded

javascript - 我如何通过 Protractor JS 从另一个 JS 调用外部 JS?

angularjs - Protractor 测试后清理

angularjs - Protractor 0.16.1 e2e AngularJS-启动 Selenium 独立服务器…events.js :72 Error: spawn ENOENT

AngularJS e2e 测试 - $routeParams 始终为空

angularjs - 我无法让 phantomjs 单击登录按钮

javascript - Protractor 检查 JavaScript 全局变量的值

angularjs - 模拟 e2e 测试时如何检测 API 修改?

angularjs - 无法使用 Protractor 在 Angular JS 应用程序中查找元素

angularjs - 收到错误 : Error while waiting for Protractor to sync with the page: {}