Cucumber:场景大纲-在运行时访问数据表

Cucumber:场景大纲-在运行时访问数据表,cucumber,bdd,Cucumber,Bdd,在cucumber特性文件中,我们使用的是场景大纲,在运行脚本之前,我们需要在运行时填充数据 根据数据文件中传递的城市路线,我们使用API创建PNR,该API返回实际的PNR。创建的PNR值需要存储在场景数据表中 如果我们有场景,我们可以使用DataTable函数来访问函数中的值。我们是否有任何类与场景大纲数据表交互 e、 g 场景大纲: 给定用户已打开应用程序 并验证是否已成功加载查找页 然后输入确认号 然后输入姓氏 示例: |出发城市|到达| PNR |乘客姓名| |布鲁斯·韦恩| 如果您

在cucumber特性文件中,我们使用的是场景大纲,在运行脚本之前,我们需要在运行时填充数据

根据数据文件中传递的城市路线,我们使用API创建PNR,该API返回实际的PNR。创建的PNR值需要存储在场景数据表中

如果我们有场景,我们可以使用DataTable函数来访问函数中的值。我们是否有任何类与场景大纲数据表交互

e、 g

场景大纲:
给定用户已打开应用程序
并验证是否已成功加载查找页
然后输入确认号
然后输入姓氏
示例:
|出发城市|到达| PNR |乘客姓名|
|布鲁斯·韦恩|
如果您注意到,我没有在功能文件中传递PNR值,根据传递的路线,PNR是在运行时创建的,此时航班可用

因此,我必须用创建的值填充PNR字段。不仅是价值,还需要填写飞行时间


请告诉我现有的类或替代类是否可以解决此问题。

答案只是设计-使用两种方法之一

  • 确保您有生成PNR号码的背景,并将其传递给 要通过变量执行后续步骤,请将变量名称放在PNR Number列下,并在步骤中将其用作eval(变量)
  • 插入一个步骤来生成它-也就是说,您在这里不接受任何参数,请将其传递到下一个需要的步骤。执行与上面相同的操作-评估变量名

  • 如果您在测试开始之前不知道会发生什么,那么您没有正确地设计测试。你为什么不知道PNR会是什么?可能是因为您无法控制用于创建PNR的数据。要正确设计测试,您需要控制输入值,无论是通过ORM数据注入来控制PNR将是什么,还是通过模拟提供PNR的服务器,或者类似的方式。@Dave McNulla:问题是,对于我所有的测试用例,输入都是PNR,因此,我需要在运行时为通过的航线的下一个航班创建一个PNR。这是我无法控制的。如果我试图手动输入每个测试用例的PNR,那么自动化测试用例就没有任何好处如果你试图测试一些你无法控制的东西,那么你就无法控制结果。Ram你能接受我的答案吗
    Scenario Outline:
      Given user have opened the application
      And verifies if lookup page is loaded successfully
      Then enter <ConfirmationNumber> as confirmation number
      Then enter <LastName> as last name
    
    Examples:
      |DepartureCity|ArrivalCity|PNR|PassengerName|
      |BAH          |AUH        |   |BRUCE WAYNe  |