接口测试 用 Httprunner3 做接口测试遇到了问题,求解~

tialias · 2020年11月05日 · 最后由 tialias 回复于 2020年11月11日 · 3597 次阅读
.teardown_hook("${get_field_codetype($response)}")
.validate()
.assert_equal("status_code", 200)

其中.teardown_hook 的 get_field_codetype() 会返回一个字典类型的参数

问题 1:怎么接收这个参数
问题 2: 怎么传入下个 Step 的.with_json 中

共收到 9 条回复 时间 点赞


把获取的参数设置成一个环境变量,下个接口获取一下

这个方法是传入这次请求的 response,在 debugtalk.py 里处理这个 response 并返回了一个字典,所以不知道怎么处理这个参数

jmspath 了解一下?可以这么写:第一个接口节选
.with_headers(
*{
"Host": "${ENV(host)}",
"Accept": "application/json, text/javascript, */
; q=0.01",
"User-Agent": "Mozilla/5.0 (Macintosh;,
"X-Requested-With": "XMLHttpRequest",
"Referer": "http://${ENV(host)}",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
}
)
.extract()
.with_jmespath("headers.Cookie", "cookie")
.with_jmespath("body.user.employeeId","operatorId")
.with_jmespath("body.employee.orgId","orgId")

第二个接口用 RunTestCase 的方法 export 出这些变量
Step(
RunTestCase("TestLogin")
.call(login)
.export(*["cookie", "operatorId", "orgId"])
),

我去催饭 回复

嗯嗯,理解这种方法,但是我这个参数不是请求返回的,而是我调用一个方法返回的,.teardown_hook("${get_field_codetype($response)}") 其中 get_field_codetype($response) 返回了一组数据,我想传到下一个 step 里

把 response 保存起来作为变量(先不处理),在下一个 step 的变量定义中通过调用函数(当前步骤的调用函数操作放到这里)后返回值的值赋值给变量就可以使用了。

t-bug 回复


这个 hook 返回了"a_response",怎么在下一个 step 中引用,并且它是字典类型,我需要用 key 取值

return 字典本身,例如 return {"a":1,"b":"abc"} 试试

tialias 回复

我使用的老版本看的 demo,不知道最新版本是否支持这种做法。

对于你这种情况:
步骤 1:直接保存 response 为某个变量 a。
步骤 2:在接下来的步骤中调用 debugtalk.py 中自定义的函数,参数就是步骤 1 中保存的变量 a. 函数返回值就是自己需要的值即可。

t-bug 回复

老哥,用你的方法已解决,谢谢大家解惑

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册