繁体   English   中英

如何使黄瓜测试步骤仅在Chrome上运行一半,而其余步骤在不同浏览器上运行?

[英]How to make cucumber test steps run half steps only on Chrome and rest of the steps on different browsers?

我的黄瓜测试有多个步骤。 例如下面的测试:

Given I navigate to my setup application
And I published an article
When I open client website
Then I can see the published article

第1步和第2步是设置步骤,需要在设置网站上运行,并且仅在chrome上运行一次才能创建方案的设置。 完成后,需要在客户端网站上的不同浏览器/设备(IE,Chrome,Firefox,Safari,Mobile)上检查step3和Step4。

我的框架使用Cucumber和JavaScript。 我如何在黄瓜中实现这一点,即场景中的某些步骤只能在chrome上运行一次,而其余步骤应该在不同的设备和浏览器上运行?

我相信我不能使用``之前和之后''钩子,因为每个测试的设置步骤都不同,但是,在框架中所有测试运行之前和之后,钩子也不能使用背景,因为背景将再次成为所有测试的背景在每个功能文件中。 但就我而言,每个测试都有不同的设置。

为什么在这种特定情况下,您需要前两个步骤才能通过浏览器。 您当然知道发布的文章只是您数据存储中的记录。 当然,您可能会遇到一些场景,这些场景表明可以使用Web界面创建文章,例如

Scenario: Create article
  Given I can create an article
  When I create an article
  Then I should have created an article

但是一旦有了这些,您就不再需要每次创建文章时都通过Web界面。 相反,您可以通过以下方式简化该过程

1)直接调用创建文章的服务(首选)2)直接写入数据库以创建适当的文章记录

所以你的情况会变成像

Scenario: View my published article
  Given I have published an article  # shortcuts and does not use a browser
  When I view my article             # uses a browser
  Then ...

现在,您的方案仅使用一个浏览器,并且您的问题已经消失。 现在,您可以使用多种技术来确保可以在各种浏览器中查看文章。

这种为Givens快捷方式的模式,并且仅将UI用于When's,具有使场景变得更快的附加好处。 您不能为每个Given轻松地使用它,诸如“我已登录”之类的某些内容需要通过浏览器浏览,但是绝大多数Givens可能是捷径。

不知道这是否是个好主意,但这是您想要的:

Scenario Outline: Multiple browsers
  Given I navigate to my setup application
  And I published an article
  When I open client website with "<browser>"
  Then I can see the published article with "<browser>"

Examples:
 | browser  |
 | IE       |
 | Chrome   |
 | Firefox  |
 | Safari   | 
 | Mobile   |

参见https://cucumber.io/docs/guides/10-minute-tutorial/#using-variables-and-examples

在步骤定义中,您必须设置适当的webdriver。 检查https://github.com/bonigarcia/webdrivermanager

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM