HttpRunner3.x 详细学习笔记(一)

第1章 环境与简介

1.1HttpRunner3简介简介:

1.HttpRunner是什么样的框架
HttpRunner是一款面向HTTP(S)协议的通用开源测试框架,支持3种格式的用例:YAML/JSON/Pytest代码,即可实现自动化测试、持续集成等多种测试需求。
可以支持的接口协议:HTTP(S)
不支持的接口协议:websocket、dubbo等其它
HttpRunner3与其他框架对比有哪些优势
HttpRunner3与其他框架对比有哪些优势?
HttpRunner的优势在于上手容易(不用太多代码量)只需维护YAML/JSON脚本即可实现接口自动化
Httprunner3可以直接写Pytest风格的测试用例
当然复杂的场景需借助debugtalk.py写辅助函数完成

HttpRunner 的设计 & 实现
充分复用优秀的开源项目,不追求重复造轮子
在这里插入图片描述
借鉴优秀(开源)项目

加粗样式
借力行业标准
HAR
在这里插入图片描述
requests
在这里插入图片描述

2.框架原理
框架原理-基于requests库发请求
框架原理-基于requests库发请求

3.主要特性(能做什么,不能做什么)

①.继承Requests的全部特性,轻松实现HTTP(S)的各种测试需求
②.以YAML或JSON格式定义测试用例,Pytest以简洁优雅的方式运行。
③.在HAR支持下记录并生成测试用例。
④.支持variables/extract/validate/hooks机制,以创建非常复杂的测试方案。
⑤.使用debugtalk.py插件,任何功能都可以在测试用例的任何部分使用。
⑥.使用jmespath,提取和验证json响应从未如此简单。
⑦.有了Pytest,数百个插件随时可用。
⑧.使用Allure,测试报告可以非常强大。
⑨.通过重复使用Locust,您可以进行性能测试,而无需进行额外的工作。
⑩.支持CLI命令,与CI/CD完美结合。

4.YAML/JSON/Pytest用例示例
①yaml结构testcase
yaml结构testcase
②JSON格式的testcase
JSON格式
JSON和YAML在线转换
JSON和YAML在线转换 在线转换
pytest脚本

③Pytest格式示例

总结
Httprunner3.x可以支持3种格式脚本
-Json
-Yaml
-Pytest
Json和Yaml差异不大,2个可以互相转
Httprunner3.x最大的特点是基于Pytest框架了,
官方建议尽量写Pytest风格脚本,
pycharm等编辑器会带出对应方法(避免关键字单词记不住的问题)

1.2环境准备

1.Windows10
2.Pythonv3.9.X(强烈建议使用Python3.6及以上版本 不要python 3.10)
3.HttpRunnerv3.1.6(目前最新版)
4.Pycharm

1.pip安装HttpRunner,不指定版本,默认为最新版本

pip install httprunner

2.如果安装超时,可以加豆瓣下载源–index-url

# 指定一个版本
pipinstallhttprunner==3.1.6--index-urlhttps://pypi.douban.com/simple 

3.查看安装版本号httprunner -V
在这里插入图片描述
子命令

hrun -h
har2case -h
hmake -h

4.pip卸载HttpRunner

pip uninstall httprunner

检查版本
安装完成后,检查我们的版本,注意版本号,一定要一样

hrun-V

在这里插入图片描述

>pip3 show har2case

在这里插入图片描述
如果没有安装har2case 可以手动再次安装
在这里插入图片描述
命令介绍-h

httprunner -h

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

需注意的是这里用的是httprunner命令(并不是hrun)

startproject创建项目

>httprunner startproject demo

目录结构
在这里插入图片描述

make是把JSON/yaml测试用例转换为pytest测试用例。需要指定yaml/JSON文件路径或者文件夹路径。执行后生产对应的pytest用例
在这里插入图片描述
run执行用例

 >httprunner run testcases

run命令实际上有两个动作,一个是把JSON/yaml测试用例转换为pytest测试用例,同make
另一个是用pytest执行测试用例

在这里插入图片描述
在这里插入图片描述
hrun 和 hmake
在这里插入图片描述
在这里插入图片描述

1.3 har2case charles/ Fiddler抓包录制生成用例

抓包生成 .har 文件

  • har2case 生成 Yaml 格式用例脚本
  • har2case 生成 Json 格式用例脚本
  • har2case 生成 Pytest 格式用例脚本
    不是很会使用fiddler 记录下
    Fiddler抓包生成 .har 文件 抓到这个请求后,右上角File->Export Sessions->Selected Sessions->Select Export Format->勾选HTTPArchive v1.1
    在这里插入图片描述
    har2case转 yaml 格式脚本
 > har2case -2y login.har 

在这里插入图片描述

-2y参数是设置转成.yml格式的脚本,如果不加这个参数,默认转成json格式 运行用例 .yml格式脚本生成后,接下来使用hrun运行用例

   > hrun test_login_demo.yml

生成 json 格式脚本

> har2case -2j demo.har 

har2case默认生成json格式的脚本
在这里插入图片描述
生成 Pytest 格式脚本

> har2case logino.har 

不带参数直接转 Pytest 用例
在这里插入图片描述
–filter 和 --exclude(其实用处不是很大,可以直接在fiddler工具上删掉不要的请求 Fiddler 会话框选中不要的请求 Remove)
可以使用filter参数,过滤 url 包含xxx.com的内容,如只转包含127.0.0.1的 url 请求

> har2case demo.har --filter 127.0.0.1 

也可以使用exclude来过滤,除xxx.com以外的内容

> har2case demo.har --exclude xxxx.com

如果保存的会话有多个请求
在这里插入图片描述
使用–filter参数,过滤 url 包含xxx.com的内容

>har2case -2y C:\Users\dell\Desktop\duo.har --filter http://49.235.92.12:7005/

在这里插入图片描述
使用–exclude来过滤,除xxx.com以外的内容

>har2case -2y C:\Users\dell\Desktop\duo.har

在这里插入图片描述

第 2 章 测试用例 TestCase

2.1 测试用例 – yaml 用例结构

httprunner 3.x 版本弱化了api层的概念,直接在 testcase 中写 request 请求,如果是单个请求,也可以直接写成一个 testcase 。每个 testcase 必须具有两个类属性:config 和 teststeps
在这里插入图片描述

在这里插入图片描述

2.2测试用例–request请求参数

在这里插入图片描述
在这里插入图片描述
Httprunner发送请求是基于requests库
request中的描述形式requests.request完全相同
在这里插入图片描述
当使用data传值时,入参为object类型,在发送前,request将参数前置处理,在body中处理成格式为k1=v1&k2=v2 格式,content_type:application/x-www-form-urlencoded(注意:当如上字典多层嵌套时,只能解析到第一层,value值必须为字符串,否则会解析出错)
当request使用json传值时,入参为json字符串,在发送前,request将参数前置处理,在body中处理成格式为json字符串,content_type:application/json

2.3测试用例–GET请求示例(params)

1.get请求不带参数/api/test/demo Yaml示例
在这里插入图片描述

2.get请求带参数(params) yaml演示
/api/v1/goods?page=1&size=2
在这里插入图片描述

2.4 测试用例 – base_url

base_url 是部署接口项目环境地址
部署环境地址和端口是有可能会变的
http://49.235.92.12:8201/api/test/demo
部署环境: 包含http协议 、 ip(49.235.92.12)或域名 、 端口8201(不写打开默认80) http://49.235.92.12:8201
接口地址:只端口后面的参数 /api/test/demo /api/v1/goods
部署环境是可以变的,比如test环境,uat 环境,pre环境 接口地址不变
在这里插入图片描述

2.5 测试用例 – https请求(SSL证书)

如果不开代理工具如fiddler,直接请求是没问题的
在这里插入图片描述
在这里插入图片描述
打开fiddler代理工具,会报: requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)
在这里插入图片描述
TRequest 默认 verify: False 忽略对证书的校验
在这里插入图片描述

2.6 测试用例 – post请求类型application/x-www-form-urlencoded

Post请求参数类型 content-type:application/x-www-form-urlencoded
案例
/api/v4/login
Content-Type: application/x-www-form-urlencoded
username=test&password=123456
Request 发请求传data参数
在这里插入图片描述

2.7 测试用例 – variables 变量声明与引用

teststeps 中变量对当前 step 有效
config 中变量在整个 yaml 中都生效

Variables 声明变量 $var 引用变量
在这里插入图片描述
变量优先级:如果 Config 和 Step 中都有同一变量
Step变量> Config变量
0

2.8 测试用例 – validate 校验结果

validate 校验结果
使用 jmespath 提取 JSON 响应正文并使用预期值进行验证。

  • jmes_path:jmespath 表达式
  • expect 预期值:这里也可以使用指定的预期值、变量或函数引用
  • message 消息(可选):用于指示断言错误原因
    使用 jmespath 提取 JSON 响应
    Httprunner 返回四个对象
  • status_code 状态码
  • headers 返回头部
  • cookies 返回cookies
  • body 返回body内容(一般是 json 格式)
  • 在这里插入图片描述
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值