httprunner3.x python语言编写测试用例

本文介绍了如何在httprunner 3.x版本中使用Python编写测试用例。通过Config()配置全局变量,如base_url和verify,然后在teststeps部分使用RunRequest()定义接口请求,并利用with_variables()设置局部变量,通过.with_jmespath()提取参数,.validate()进行断言验证。文中提供了一些常见的断言方法,并提到了使用pytest命令或hrun命令运行测试用例。
摘要由CSDN通过智能技术生成

httprunner是采用yaml/json文件编写测试用例,然后运行,但是3.x后引入了pytest框架,我们即便使用yaml和json文件,最后的执行也是转成.py文件执行。
所以3.x版本推荐直接编写代码,相对来说,代码编写比文件编写要好太多,因为httprunner3.x的语法关联性特别强;以下就是针对代码编写用的一些常用操作。

附上示例代码:


from httprunner import (HttpRunner, Config, Step, RunRequest, RunTestCase)


class TestCaseLogin(HttpRunner):
    config = (
        Config("login")
        .variables(
            **{
   "user_name": "${ENV(USERNAME)}",
               "password": "${ENV(PASSWORD)}"
               }
        )
        .base_url("${ENV(HOSTURL)}")
        .verify(False)
        # .export(*["foo3"])
    )
    teststeps = [
        Step(
            RunRequest('login')
            .with_variables(**{
   'length': 32, 'status_code': 201, 'status': 1})
            .post('/client/user/auth')
            .with_headers(**{
   "Content-Type": "application/json"})
            .with_json({
   "scenario": "client", "company_id": 5940, "user_name": "$user_name", "password": "$password",
                        "device_type": "2", "device": ""})
            .extract()
            .with_jmespath("body.data.token", "token")
            .validate()
            .assert_equal('status_code', '$status_code', '断言失败')
            .assert_equal('body.status', '$status', '断言失败')
            .assert_length_equal('body.data.token', '$length', '断言失败')
        )
    ]


if __name__ == '__main__':
    TestCaseLogin().test_start()
    

config部分:

    
    config = (
        Config("login")
        .variables(
            **{
   "user_name": "${ENV(USERNAME)}",
               "password": "${ENV(PASSWORD)}"
               }
        )
        .base_url("${ENV(HOSTURL)}")
        .verify(False)
        # .export(*["foo3"])
    )
    

Config(): 设置名称,也就是name,它是必填的

  • .verify(): 针对https接口,忽略证书的操作,放布尔值,全局变量
  • .base_url():是放请求地址的,也就是域名, 全局变量
  • .variables():设置变量,可在此处设置全局变量,用于下面的用例引用它
  • .export(): 提取关联参数,全局变量
    在这里插入图片描述

注意:Config()中设置的均为全局变量,整个.py文件中都可以引用的

teststeps部分:

    
    teststeps = [
        Step(
            RunRequest('login').
            .with_variables(**{
   'length': 32, 'status_code': 201, 'status': 1})
            .post('/client/user/auth')
            .with_headers(**{
   "Content-Type": "application/json"})
            .with_json({
   "scenario": "client", "company_id": 5940, "user_name": "$user_name", "password": "$password",
                        "device_type": "2", "device": ""})
            .extract()
            .with_jmespath("body.data.token", "token")
            .validate()
            .assert_equal('status_code', '$status_code', '断言失败')
            .assert_equal('body.status', '$status', '断言失败')
            .assert_length_equal('body.data.token', '$length', '断言失败')
        )
    ]

在这里插入图片描述
RunRequest():设置名称,也就是name,它是必填的,设置完它后,才能引下面的一些方法

  • .with_variables():设置局部变量,个人建议你可以把接口一些预期结果放在这里
  • .post()/put/get/options/delete/head/patch:接口的请求方式;设置好请求方式后,再就可以设置接口的一系列信息
请求方式中的方法 注释信息
.with_headers() 设置头部信息
.with_json() 放json请求数据
.with_params() 针对跟在url后面的参数
.with_data() 放data请求数据
.set_timeout() 设置超时时间
.set_verify() 针对https,忽略证书
.with_cookies() 设置cokkies信息
.set_allow_redirects() 重定向,传布尔型值

在这里插入图片描述

.extract():引入提取参数方法

  • .with_jmespath(“body.data.token”, “token”)

栗子:.with_jmespath(“body.data.token”, “token”)

在这里插入图片描述

.validate():引入断言校验方法

  • .assert_equal() # 断言相等

栗子: .assert_equal(‘status_code’, ‘$status_code’, ‘断言失败’)

在这里插入图片描述

  • equal: 等于
  • contained_by: 实际结果是否被包含在预期结果中
  • contains: 预期结果是否被包含在实际结果中
  • endswith: 以…结尾
  • greater_or_equals: 大于等于
  • greater_than: 大于
  • length_equal: 长度等于
  • length_greater_or_equals: 长度大于等于
  • length_greater_than: 长度大于
  • length_less_or_equals: 长度小于等于
  • length_less_than: 长度小于
  • less_or_equals: 小于等于
  • less_than: 小于
  • not_equal: 不等于
  • regex_match: 字符串是否符合正则表达式匹配规则
  • startswith: 以…开头
  • string_equals: 字符串相等
  • type_match: 类型是否匹配


teststeps列表中的Setp可以设置多个,针对业务的接口处理起来是比较方便的:


from httprunner import (HttpRunner, Config, Step, RunRequest, RunTestCase)


class TestCaseLogin(HttpRunner):
    config &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值