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): 用于描述断言失败原因
——————————————————————————————————————
本文后半部分内容的原文链接:https://blog.csdn.net/weixin_43880991/article/details/116221278
posted @   乌醍  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示