我编写的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"}
]}
或者有什么解决办法吗?这一定是人们在Cucumber中比较非琐碎数据输出的常见场景。
谢谢,
对于您的问题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。
步骤定义