我想使用Cucumber测试我的REST API。 因此,我想在数据库中填充一些测试数据,并在“何时”步骤中发送GET请求。如果可以在步骤中解释数据库的状态,那就太好了。那么有可能从数据表中的一个单元引用另一个表中的一行吗?像这样:
Given the system knows of the following products
| productId | productName | productCategory |
| 1 | Kaffee | {{HotDrinks}} |
| 2 | Espresso | {{HotDrink}} |
| 3 | Hot Chocolate | {{KidsDrinks}} |
And the system knows about the following productCategories
| | productCategoryId | productCategoryName | customizations |
| {{HotDrinks}} | 1 | HotDrinks | "milk", "shots" |
| {{KidsDrinks}} | 2 | KidsDrinks | "cream" |
And the system knows about the following customizations
| | customizationId | customizationName | kinds |
| {{milk}} | 1 | milk | skim, semi, whole |
| {{shots}} | 2 | shots | single, double |
| {{cream}} | 3 | cream | true |
When a client requests GET /productCatalogue
Then the HTTP response status will be 200
And the response body contains the following JSON
"""
...
"""
有什么办法可以做这样的事情吗?
答案 0 :(得分:-1)
您可以使用NoraUi(NoraUi,用于用户界面的NOn回归自动化,是一个基于Selenium,Cucumber和Gherkin堆栈的Java框架,可以创建GUI测试项目,这些项目可以包含在以下项目的持续集成链中:单/多应用程序Web解决方案构建。)
如果您不使用此完整的交钥匙框架,则可以从他们的代码中汲取灵感。该框架的协调集成中有一个完整的示例。在方案“ hello”中,您将找到以下步骤:
And I save the value of REST API 'GET' 'GITHUBAPI_HOME' '/search/users?q=location:rennes+language:java&page=1&per_page=10' in 'title' context key.
此步骤与以下Java代码(完整代码here)匹配:
@And("I save the value of REST API '(.*)' '(.*)' '(.*)' in '(.*)' context key[\\.|\\?]")
public void saveValue(String method, String pageKey, String uri, String targetKey, List<GherkinStepCondition> conditions) throws TechnicalException, FailureException {
...
try {
json = httpService.get(Context.getUrlByPagekey(pageKey), uri);
} catch (HttpServiceException e) {
...
}
...
}
HttpService代码here。该服务使用okhttp3.OkHttpClient