httprunner学习笔记(自用版)


HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求

一、安装

前提条件:已安装python(自用的3.5)
dos命令行输入:pip install httprunner
验证安装成功:

C:\Users\Administrator>hrun -V
2.5.9

二、脚本录制

开源项目:
1、http://erp2.hzb-it.com/
2、https://github.com/macrozheng/mall
https://www.macrozheng.com/admin/index.html#/login

1、charles录制

打开charles,过滤掉其他域名
在这里插入图片描述

抓取场景: 登录—>组织—>职位管理—>新增职位为:初级测试工程师
在这里插入图片描述

回到charles,把js、css静态文件清除:选中-右键-clear(如果没有,就忽略)
在这里插入图片描述
把接口全选导出,保存文件类型为HTTP Archive(.har)
在这里插入图片描述

在这里插入图片描述

2、F12脚本录制

在这里插入图片描述
在这里插入图片描述

三、脚本生成

1、har转换为json脚本

将HAR转换为默认的JSON脚本,dos命令行输入:har2case 文件名.har(先切换到文件目录,在输入,文件我放到桌面了,执行后可以看到一个同名的json文件)
在这里插入图片描述

2、har转换为yml脚本

将HAR转换为YAML脚本,dos命令行输入:har2case -2y 文件名.har(执行后可以看到一个同名的yml文件)
在这里插入图片描述

生成的文件
在这里插入图片描述

四、执行脚本

注:由于录制脚本时,新增了岗位初级测试工程师,所以列表中删除后再去执行脚本,否则执行脚本后会提示职位已存在,又或者直接在录制的json文件中修改为其他名称都可以
在这里插入图片描述

dos命令行输入:hrun 文件名.json 或hrun 文件名.yml

在这里插入图片描述

五、查看报告

在这里插入图片描述
点击log,可以查看接口的请求和返回数据

在这里插入图片描述

六、httpruner接口自动化项目架构

创建项目命令:hrun --startproject 新项目名称

在这里插入图片描述
桌面会显示刚创建的testpro的文件夹
在这里插入图片描述
使用pycharm打开,目录结构如下

在这里插入图片描述

  • api:存放yml文件,接口定义
  • reports:存放测试报告
  • testcases:存放测试用例
  • testsuites:测试套件
  • .env:存放环境变量
    引用方式:在YAML/JSON脚本中,${ENV(变量名)}获取环境变量
  • .gitignore 当项目使用git做版本控制的时候,添加在此文件中的文件不会被git管理
  • debugtalk.py:项目中逻辑运算辅助函数
    ① 编写常见功能和业务相关的函数,使得测试用例中可以引用函数,实现一些动态的计算逻辑,如获取时间戳、生成随机数、处理签名等
    ② 编写hook函数,使得测试用例执行前后可以调用钩子函数,实现测试的准备和清理工作,如初始化某个请求参数、修改响应结果的某个值等
    引用方式:在 YAML/JSON 格式的测试用例中,通过${func()}的方式引用
    注:
    ① 文件存在时,其所在目录被视为项目工程根目录
    ② 该文件不存在时,运行测试的所在路径被视为项目工程根目录

1、编写接口描述(api)

模板样例demo_api.yml

name: demo api
variables:
    var1: value1
    var2: value2
request:
    url: /api/path/$var1
    method: POST
    headers:
        Content-Type: "application/json"
    json:
        key: $var2
validate:
    - eq: ["status_code", 200]

模板说明

  • name:接口名称
  • variables:变量信息,格式为key: value(注意冒号后面有一个空格)
  • request:请求信息
  • url:请求地址
  • method:请求方法
  • headers:请求头
  • json:请求参数 ,格式为key: value,value一般引用变量或函数,格式为:${var}、 ${value}
  • validate:结果断言

2、编写测试用例(testcases)
模板样例demo_testcase.yml

config:
    name: "demo testcase"
    variables:
        device_sn: "ABC"
        username: ${ENV(USERNAME)}
        password: ${ENV(PASSWORD)}
    base_url: "http://127.0.0.1:5000"

teststeps:
-
    name: demo step 1
    api: path/to/api1.yml
    variables:
        user_agent: 'iOS/10.3'
        device_sn: $device_sn
    extract:
        - token: content.token
    validate:
        - eq: ["status_code", 200]
-
    name: demo step 2
    api: path/to/api2.yml
    variables:
        token: $token

模板说明
config:整个测试用例的全局配置
name:测试用例名称,测试报告会显示该名称
variables:全局变量
base_url:访问地址,一般写域名host
teststeps:测试步骤,下面以列表形式编写一个或多个测试步骤,并且每一个测试步骤前面有‘-’
name:测试步骤名称,测试报告会显示该名称
api:引用接口描述文件,相对路径从根目录开始
variables:局部变量,优先于全局变量,若此处填写了局部变量,则会覆盖config中的variables全局变量
extract:从响应结果中提取参数,并保存到变量中,给其他测试步骤引用
validate:结果断言

打开上面生成的login.yml文件

config:
    name: testcase description
    variables: {}
teststeps:
-   name: /app/common/login
    request:
        data:
            password: '123'
            username: admin
        headers:
            Content-Type: application/x-www-form-urlencoded
            User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
                (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
        method: POST
        url: http://erp2.hzb-it.com/app/common/login
    validate:
    -   eq:
        - status_code
        - 200
    -   eq:
        - headers.Content-Type
        - application/json;charset=UTF-8
    -   eq:
        - content.msg
        - 提交成功
    -   eq:
        - content.errCode
        - 0

部分参考:https://blog.csdn.net/dad22211/article/details/133893006

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值