Protractor 是一个流行的端到端测试框架,它可以帮助我们在浏览器中自动化测试 AngularJS 应用程序。然而,由于 Protractor 是基于 WebDriverJS 构建的,它可能会遇到与 Selenium 相同的问题 —— 有些测试用例可能会因为环境问题导致失败,例如网络不稳定或者浏览器崩溃等。在这种情况下,我们不得不重新运行整个测试套件,这显然会浪费我们的宝贵时间。
为了解决这个问题,有一个叫做 protractor-flake-tests-rerun 的 npm 包,它可以帮助我们自动化地重新运行失败的测试用例,从而提高测试的可靠性。在本文中,我们将介绍如何使用这个 npm 包。
安装
首先,我们需要安装 protractor-flake-tests-rerun 包。使用以下命令可以完成安装:
npm install protractor-flake-tests-rerun --save-dev
注意,这个包是开发环境的依赖项,所以我们使用了 --save-dev
参数。
配置
接下来,我们需要在 Protractor 的配置文件中配置 protractor-flake-tests-rerun 包。假设我们的 Protractor 配置文件名为 protractor.conf.js
,以下是我们需要添加的额外配置:
-- -------------------- ---- ------- ----- - --------------- - - ---------------------------------------- -------------- - - -- -- ---------- ----- -- ---------- ---------- - ----- --------------- - --- ----------------- ------------ -- -- --------- --------------- - -- ---------- ---------------- ------------------- ------------------------- -- -------- ------- -- ------- -------- --- ------ -------------------------- -- --
在这个配置中,我们首先引入了 protractor-flake-tests-rerun 的主要类 ProtractorFlake。然后我们在 onPrepare
钩子函数中创建了一个 ProtractorFlake 实例并返回它的 execute
方法。这个方法将在测试套件运行之前让 protractor-flake-tests-rerun 重新运行任何失败的测试用例。
注意,我们在 protractorArgs
中添加了 Protractor 命令行参数,因此上面的示例中包含了一个 baseUrl 参数。
现在,我们已经成功地配置了 protractor-flake-tests-rerun 包,让我们看看它是如何工作的。
如何工作
当我们运行 Protractor 测试套件时,protractor-flake-tests-rerun 将执行以下步骤:
- 检测运行环境,并记录下 node.js 和 Protractor 的版本号。
- 运行整个测试套件一次。
- 如果有一个或以上的测试用例失败,protractor-flake-tests-rerun 将得到这些失败的测试用例的规范,然后重新运行它们,但将它们之间的运行间隔时间增加到一定的间隔时间内。
- 如果这些测试用例中的任何一个在重新运行之后成功了,那么这个测试套件就将被认为是成功的,不进行任何进一步的操作。如果所有的重新运行尝试都失败了,则将直接采用最终结果,即失败的测试用例的规范。
需要注意的是,我们可以配置 maxAttempts
表示最大的重新运行次数,如果达到了这个次数后还是无法成功的话,Protractor 将会把测试结果读取到测试报告中,这是一个很好的技巧来帮助我们找到常见的错误并避免大量的重新运行浪费时间。
示例代码
以下是一个简单的 Protractor 测试用例,在一些不稳定的网络连接下可能会运行失败。
-- -------------------- ---- ------- -------------------- ------ ---------- - ---------- -- ---- -- ------ --- -- ------ ---------- - -- ---- ----------------------------------- -- ---------- --------------------------------------------------- -- ------ ----------------------------------------- -- ------ ---------------------------------------------------------------- --- ---
默认情况下,这个测试用例将只运行一次。但如果我们想重新运行该测试用例,我们可以按照前面的步骤安装和配置 protractor-flake-tests-rerun 包,然后继续使用 protractor 命令运行测试套件即可。
总而言之,protractor-flake-tests-rerun 包可以帮助我们更好地处理测试用例失败的情况,提高测试的可靠性。识别问题并解决它们是测试自动化中至关重要的一部分,这个 npm 包是一个很好的解决方案。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562f781e8991b448e0c2c