能否将一个结果(Given)保存到 Gherkin 特征文件中的一个变量中,然后将该变量与另一个结果(Then)进行比较? (Java 的黄瓜)
Can you save a result (Given) to a variable in a Gherkin feature file, and then compare the variable with another result (Then)? (Cucumber for Java)
我是 Java 的 Cucumber 新手,正在尝试自动测试由 MS SQL 服务器支持的 SpringBoot 服务器。
我有一个端点"Get All Employees"。
编写传统特征文件时,我将不得不在 @Then
子句中列出所有员工。
这对于数千名员工来说是不可能的。
所以我只想获取数据库中 Employee table 的行数,然后与从 "Get All Employees" 端点返回的对象数进行比较。
比较
SELECT count(*) from EMPLOYEE
具有从
返回的列表的大小
List<Employee> getAllEmployees()
但是如何将行数保存在特征文件的变量中,然后将其传递给 stepdefs
Java 方法?
我还没有发现 Gherkin 允许这样做的任何方式。
您可以创建一个名为 dataRun 的包(包中有相应的 类),并在测试期间通过 setters 将详细信息保存在那里。
在步骤 "And I get the count of employees from the data base" 的执行过程中,您通过相应的 setter 设置此计数,在步骤 "And I get all employees" 中,您通过专用的 setter 设置数量。
然后在步骤 "And I verify the number of employees is the same as the one in the data base" 中,您通过吸气剂获得两个数字并比较它们。
顺便说一下,如果您将员工的姓名放入列表中并比较列表,则可以比较员工的姓名(而不仅仅是计数)。
写了几个场景和功能文件后,我了解了 Cucumber 的这一点并解决了这个问题。
Gherkin/Cucumber 不是编程语言。它只是一种规范语言。当解释器到达Given
、Then
等关键字时,就会调用Java代码中的匹配方法。所以它们只是触发器。
这些方法是 Java glue
class 的一部分。数据不会从 Java class 传递到小黄瓜功能文件中。 class 在开头实例化并保留到结尾。因此,它可以存储状态。
因此,根据我在上述问题中的示例,来自 Spring 端点调用的 Then
响应将存储在 member variable
中在 glue
class 中。下一个验证结果的 Then
调用将调用相应的 glue
方法,该方法将访问成员变量中的数据以执行比较。
所以 Gherkin 不能这样做,但是 Java 在 glue
class 中的较低级别,可以。
我是 Java 的 Cucumber 新手,正在尝试自动测试由 MS SQL 服务器支持的 SpringBoot 服务器。
我有一个端点"Get All Employees"。
编写传统特征文件时,我将不得不在 @Then
子句中列出所有员工。
这对于数千名员工来说是不可能的。
所以我只想获取数据库中 Employee table 的行数,然后与从 "Get All Employees" 端点返回的对象数进行比较。
比较
SELECT count(*) from EMPLOYEE
具有从
返回的列表的大小List<Employee> getAllEmployees()
但是如何将行数保存在特征文件的变量中,然后将其传递给 stepdefs
Java 方法?
我还没有发现 Gherkin 允许这样做的任何方式。
您可以创建一个名为 dataRun 的包(包中有相应的 类),并在测试期间通过 setters 将详细信息保存在那里。
在步骤 "And I get the count of employees from the data base" 的执行过程中,您通过相应的 setter 设置此计数,在步骤 "And I get all employees" 中,您通过专用的 setter 设置数量。 然后在步骤 "And I verify the number of employees is the same as the one in the data base" 中,您通过吸气剂获得两个数字并比较它们。
顺便说一下,如果您将员工的姓名放入列表中并比较列表,则可以比较员工的姓名(而不仅仅是计数)。
写了几个场景和功能文件后,我了解了 Cucumber 的这一点并解决了这个问题。
Gherkin/Cucumber 不是编程语言。它只是一种规范语言。当解释器到达Given
、Then
等关键字时,就会调用Java代码中的匹配方法。所以它们只是触发器。
这些方法是 Java glue
class 的一部分。数据不会从 Java class 传递到小黄瓜功能文件中。 class 在开头实例化并保留到结尾。因此,它可以存储状态。
因此,根据我在上述问题中的示例,来自 Spring 端点调用的 Then
响应将存储在 member variable
中在 glue
class 中。下一个验证结果的 Then
调用将调用相应的 glue
方法,该方法将访问成员变量中的数据以执行比较。
所以 Gherkin 不能这样做,但是 Java 在 glue
class 中的较低级别,可以。