我遇到以下重复出现的问题,遵循以下模式:
Feature: api-controller
Scenario: Adding
Given a live daemon
When we send a POST request to /api/endpoint/ with data:
"""
{
"name": "foo",
}
"""
Then the response code should be 200
And the response should give us a reference UUID as `uuid`
When we send a GET request to /api/endpoint/`uuid`
Then the response code should be 200
...
问题是,如何将我从第一次调用中获得的uuid传达到后续步骤,并保持可重复使用的步骤,例如通用的When we send a GET request to [parameter1]
我现在通过使用反引号定义变量来在小黄瓜内部实现一种迷你语言,随后的步骤应该可以访问。但是,这感觉就像是有人已经用另一种方式解决了问题,或者被认为是不好的做法,因为我找不到其他这样做的例子。
答案 0 :(得分:0)
您可以查看qaf webservice support。它提供了request call repository概念,您可以在请求调用中包含参数。
say {var-name} is value at jsonpath {jsonpath}
say {var-name} is value at xpath {xpath}
Feature: api-controller
Scenario: Adding
Given a live daemon
When user request "request.call1" with {"name": "foo"}
Then response should have status code 200
And say "UUID" is value at jsonpath "uuid"
When user request "request.call2"
Then response should have status code 200
...
此处的所有步骤均可用于qaf webservice support。在上面的示例中,它使用需要在属性文件或xml文件中定义的请求调用request.call1
和request.call2
。以下是xml文件中的示例。
<requests>
<request>
<call1>
<endPoint>/api/endpoint/</endPoint>
<headers>{'Content-Type': 'application/json'}</headers>
<method>POST</method>
<body>{'name': '${name}'}<body>
<parameters>
<!--default values of parameters if not provide-->
{
'name':'${rnd:aaa}'
}
</parameters>
</call1>
<call2>
<endPoint>/api/endpoint/${uuid}</endPoint>
<headers>{'Content-Type': 'application/json'}</headers>
<method>GET</method>
</call2>
</request>
</requests>
如果要使用黄瓜,可以将其与QAF-cucumber
一起使用