我正在使用黄瓜与硒一起测试java web应用程序。以下是我们的方案
slcan
现在它根据这么多的计算在数据库中生成一个PIN。现在我需要特定的PIN,将其作为不同场景的输入。我怎么能实现这个目标?提前谢谢。
答案 0 :(得分:0)
我认为在上述情况之后您可以访问数据库中的PIN。在这种情况下,我会再添加一个步骤来获取 - 并确认 - 确实生成了PIN。此时,您可以将PIN存储在本地变量中,然后在下一个场景中使用它。
所以你的第一个场景看起来像这样:
Get generate PIN page
Enter user name
Enter password
Click on submit button
Confirm PIN number in database
最后一步不会在Selenium中完成,而是通过API调用或其他方式从数据库中获取PIN。它将确认PIN(例如; regex=/^\d{4}$/
),然后将其存储在本地变量中,例如@customer_pin
(假设您正在使用Ruby)。
你的下一个场景将从这样的事情开始:
Get generate login page
Enter customer ID
Enter customer PIN
etc
当您点击"输入客户PIN"步骤,您从本地存储的变量(@customer_pin
)中拉出它。
我的建议是,在执行第二个方案时,您确认在本地存储的变量中有合法的PIN,以防有人不按顺序运行此方案。您可以通过使用全局变量并运行"之前"挂钩features/support/env.rb
文件,如下所示:
Before do
$dunit ||= false
return if $dunit
$customer_pin = nil
$dunit = true
end
在这种情况下,我使用$customer_pin
代替@customer_pin
,以使变量可全局访问。然后在运行第一个方案后,$customer_pin
将被分配给合法值,以便可以在任何后续方案中使用它。后续方案将使用正则表达式来确认它具有合法值,如果不是则引发/抛出异常。
答案 1 :(得分:0)
我会把你的问题分成两部分。
验证引脚生成的那个可能对您的利益相关者很重要。
实现后门以支持需要有效PIN的其他情况的人。也许是一个能够生成或检索有效密码的API。也许在数据库中创建并存储PIN而无需从外部触摸系统。每当我需要有效的PIN用于其他场景时,我会使用这种方式来检索PIN。
如何获得有效PIN的技术解决方案并不重要。重要的是解耦场景的执行顺序。方案的执行顺序未定义。每个场景必须能够以隔离的方式随机执行。
答案 2 :(得分:0)
要解决这种情况,您必须使用Cucumber 背景功能,这在每个步骤之前运行。并将根据给定的输入生成PIN,然后生成的PIN将在各个方案中可用。
根据您的要求查找要素文件定义。
Background:
Given I Get generate PIN page
Then I Enter user name
And Enter password
And I Click on submit button
And I Confirm PIN number in database
@TC01_GetUserInformationByPinTest @NoBrowser
Scenario: Get User information by generated PIN from background.
Given I Get User Information by using generated PIN
And I verified that given username is same as response Data
我相信这有助于您解决问题。