当前位置: 首页 > 知识库问答 >
问题:

如何在Gherkin中使用场景大纲中的文档字符串之类的东西?

沃楷
2023-03-14

我编写的gherkin特性文件如下所示:

  Scenario:  
    Given I query service by "employees"
    When I make the rest call
    Then response should contain:
      """
      {"employees":[
      {"firstName":"John", "lastName":"Doe"},
      {"firstName":"Anna", "lastName":"Smith"},
      {"firstName":"Peter", "lastName":"Jones"}
      ]}
      """

现在,由于有多个查询要测试不同的参数,如“雇员”,“部门”…等等,编写场景大纲来执行任务是很自然的:

  Scenario Outline: 
    Given I query service by "<category>"
    When I make the rest call
    Then response should contain "<json_string_for_that_category>"
    Examples:
      | category     | json_string_for_that_category     |
      | employee     | "json_string_expected_for_employee"  |
      | department   | "json_string_expected_for_department"|

其中json_string_expected_for_employee只是:

  {"employees":[
  {"firstName":"John", "lastName":"Doe"},
  {"firstName":"Anna", "lastName":"Smith"},
  {"firstName":"Peter", "lastName":"Jones"}
  ]}
    null

或者有什么解决办法吗?这一定是人们在Cucumber中比较非琐碎数据输出的常见场景。

谢谢,

共有1个答案

纪佐
2023-03-14

对于您的问题1

必须使用转义字符反斜杠(\)

示例:\“employeese\”而不是“employeese"

通常,如果输入的字符长度不是相似的,就会很乱。您可以使用缩进使其清楚。

使用单独的Java文件将所有输入存储为变量,并在执行时将其传递给Scenario outline Examples

 类似资料:
  • 有没有可能用gherkin写一个场景大纲,其中有一个断言步骤,而不是在所有的例子中都需要? null 有没有更好的写法?

  • 在我的cucumber jvm项目中,我希望在不使用场景大纲的情况下,使用相同的数据集执行场景10次(数据在excel中提供)。 有人能指导我如何做到这一点吗?

  • 这种方法的优点是,每当我添加一个新模板时,我就不需要更新特性测试。 谢谢

  • 我的cucumber小cucumber看起来像这样: 在上面的功能中,有一个背景,它将为两个场景大纲中的每个示例执行。此外,在java实现中,我们已经实现了@After和@Before钩子,它们也将针对每个示例执行。 我们正在使用spring Cumber进行步骤之间的数据注入。 当第一个场景大纲中的所有示例结束时,调用@After实现的方法两次,就会出现问题。当第二次@After同时启动时,第二

  • 尽管我已经编写单元测试20多年了,但我对Gherkin还是新手,并且还被赋予了为一个。feature文件实现故事的任务,该文件可以简化为以下内容: 也就是说,一个很长很长的场景链,每个场景都依赖于由其前身配置的系统状态。 我在JavaScript中运行Cucumber。