在我们的web应用程序中,登录某个页面需要很长时间。我们的特性和场景集是从该特定页面编写的。我们在那一页之前没有任何证明。只需10分钟就能到达那一页。
在我进一步解释之前。这是在Cucumber,我们正在使用Selenium与Java。
因此,应该执行登录操作,并且webdriver会话应该保持不变,然后场景验证就开始了。下面的特性包含以下场景。每个后续场景都依赖于前一个场景。也就是说,这些场景需要按顺序执行。
第一个特性应按顺序执行方案。然后,第二个特性应该按顺序执行场景。在此期间,我不希望为第二个场景创建一个新的会话。这些都是顺序依赖的。
我如何实现这一点?
Feature: Add a product to the quote
So that the quotation can be built on the added product
Scenario: Add a Hub
Given User A has logged in
Then Add button is available
Then Add Hub
Then Enter correct Address details
Then select correct bandwidth
And Save to Quote
Scenario: Add a Spoke
Given User A has logged in
Then Add button is available
Then Add Spoke
Then Enter correct Address details
Then select correct bandwidth
And Save to Quote
Feature: Give discount to the quote for Hub
So that the quotation can be sent to the customer
Scenario: Give 10% discount
Given Hub has already been added
Then Go to the Quote Tab
Then Enter the discount
Then Save the Quote发布于 2018-04-11 06:20:12
顺序运行的特性-两种方法这样做。首先,取决于黄瓜按字母顺序运行特性的事实。因此,请相应地命名它们。但是,这种方法很容易被一个新的特性文件名打破,该文件名位于您之前创建的特性文件名之间。其次,在runner文件中的cucumberoptions特性值(如features = "second.feature,first.feature" )中指定运行顺序。这将首先运行second.feature。有关详细信息,请参阅这。
使驱动程序在特性文件中保持活力,--使用SharedWebDriver的概念,其中包含一个静态的WebDriver,以及一个关闭驱动程序的关闭钩子。虽然您可能需要添加适当的前后挂钩,以清理cookies等。
发布于 2018-04-11 10:11:26
您应该修复您的web应用程序,这样登录就不会花费很长时间,而不是试图在场景之间保留会话,从而使Cukes完全不可靠。有时,你的测试会给你反馈,这些反馈应该付诸行动,而不是工作;)
由于登录是一件完全微不足道的事情,99.999%的web应用程序能够快速有效地完成,我发现很难相信您的应用程序是如此特殊,以至于您无法做到这一点。如果您不能,那么也许您应该创建一个新的问题,解释为什么您的登录速度这么慢,并找到一些解决方案
在场景之间共享会话意味着共享会话的Cukes不能在不使方案不可靠的情况下进行任何更改任何数据的操作。这意味着任何导致POST而不是GET的交互都不应该被允许。因此,没有填写表格、提交表格等。
当然,你可以解决这个问题,但它会产生严重的问题,只会在相当长一段时间后才会出现。然后,当场景开始失败时,您需要10倍的时间才能找到它们失败的原因,因为您必须了解整个连接场景链。
https://stackoverflow.com/questions/49767557
复制相似问题