RunRequest
RunRequest
属性名称
|
是否必填
|
作用
|
name
|
必填
|
指定测试步骤名称
|
method(url)
|
必填
|
如果在config中设置baseurl,method中只能设置相对路径,可选参数为get/post/put/delete等
|
with_params
|
可选
|
对应于的params参数的requests.request
|
with_headers
|
可选
|
对应于的headers参数requests.request
|
with_cookies
|
可选
|
cookies参数requests.request
|
with_data
|
可选
|
对应于data参数requests.request
|
with_json
|
可选
|
对应于json参数requests.request
|
with_variables
|
可选
|
指定测试步骤变量,每个步骤的变量都是独立的,参数引用使用“$变量名”,如果是函数引用使用“${函数名()}”
|
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
class TestCaseLogininfo(HttpRunner):
config = Config("用例").base_url("http://49.235.92.12:8201").variables(**{"username": "test", "password": "123456"})
teststeps = [
Step(
RunRequest("Step-Login")
.post("/api/v1/login")
.with_json({"username": "$username", "password": "$password"})
.extract()
.with_jmespath('body.token', 'token')
.validate()
.assert_equal('body.code', 0)
.assert_equal('status_code', 200)
.assert_equal('body.msg', 'login success!')
),
Step(
RunRequest("step2-info")
.post("/api/v1/userinfo")
.with_headers(**{"Authorization": "Token $token"})
.with_json({"name": "$username", "sex": "m", "age": 20, "mail": "289940479@qq.com"})
.validate()
.assert_equal("body.code", 0)
.assert_equal('status_code', 200)
.assert_equal("body.message", "update some data!")
)
]
if __name__ == "__main__":
TestCaseLogininfo().test_start()
.with_variables
设置测试步骤的变量。每个测试步骤的变量都是独立的,如果想在多个测试步骤中共享变量,需要在config variables中定义。
注意:如果config variables和.with_variables里有重名的变量,那么当你引用这个变量的时候,Step变量会覆盖config变量。
.method(url)
设置http请求方法,比如get、post、put、patch、delete等等,后面再跟上路径
注意:如果base_url在config中设置了,url只能是相对路径部分。
# 用get方法访问路径为/getTime(相对路径)
.get("/getTime")
# 用post方法访问路径id=3(绝对路径)
.post("http://www.baidu.com/getTime")
.with_params
设置url的query,以键值对的形式,相当于requests.request 中的params。
.with_params(**{"foo1": "$foo1", "foo2": "$foo2", "sum_v": "$sum_v"})
.with_headers
设置请求的headers,相当于requests.request 中的headers。
.with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"})
.with_cookies
设置Http请求cookies,相当于requests.request 中的cookies。
.with_data
设置Http的请求Body,相当于requests.request 中的data。
.with_data("foo1=$foo1&foo2=$foo2&foo3=$foo3")
.with_json
设置Http请求json格式的Body,相当于requests.request 中的json。
.with_json({"foo1": "foo1", "foo2": "foo2", "foo3": "foo3"})
.extract
利用jmespath提取Json Response body内容,
.with_jmespath(jmes_path: Text, var_name: Text)
.validate
断言,我们测试最终就是要验证接口返回是否符合预期。
格式:
assert_XXX(jmespath: Text, expected_value: ANy, message: Text="")
jmespath: jmespath表达式,可以参考https://www.cnblogs.com/jiakecong/category/1929704.html
expected_value: 指定期望值或变量,也可以调用方法
message(optional): 用于描述断言失败原因
——————————————————————————————————————
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报