第一:httprunnerV4.3.5安装与使用

一.什么是Httprunner

1.HttpRunner是面向HTTP(S)协议的通用测试框架,只需编写维护一份YAML/JSON脚本

1.1.即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求
2.核心特征
2.1.继承Requests的全部特性,轻松实现HTTP(S)的各种测试需求

2.2.测试用例与代码分离,采用YAML/JSON的形式描述测试场景,保障测试用例具备可维护性

2.3.测试用例支持分层机制,充分实现测试用例的复用

2.4.测试用例支持参数化和数据驱动机制

2.5.使用skip机制实现对测试用例的分组执行控制

2.6.支持热加载机制,在文本测试用例中轻松实现复杂的动态计算逻辑

2.7.基于HAR实现接口录制和用例生成功能(har2case)

2.8.结合Locust框架,无需额外的工作即可实现分布式性能测试

2.9.执行方式采用CLI调用,可与Jenkins等持续集成工具完结合

2.10.测试结果统计报告简洁清晰,附带详尽统计信息和日志记录

2.11.具有可扩展性,便于扩展实现Web平台化(HttpRunnerManager

二.HttprunnerV4版本

1.开发语言:Golang+Python

2.脚本转换工具:HAR/Postman/Swagger/Curl

3.脚本格式类型:YAML/JSON/pytest/gotest

4.脚本执行引擎:Go自研+Python pytest

5.接口测试报告:html自研(Go template)+pytest-html/allure

6.性能测试引擎:Go Boomer

7.运行环境依赖:Go引擎无需依赖、pytest引擎依赖Python3.7+

8.安装部署方式:curl/wget/pip

三.版本对比(V1/V2/V3/V4)

在这里插入图片描述

四.V4版本的GO&Python功能对比

在这里插入图片描述

五.HttprunnerV4.3.5框架与unittest&pytest框架的区别

1.使用语言和用途

在这里插入图片描述

2.学习曲线和复杂性

在这里插入图片描述

3.功能和特性

在这里插入图片描述

4.优劣势总结

在这里插入图片描述

六.Httprunner下载

1.一键安装部署(MAC)
$ bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"
1.1.如报错提示:无权限则使用sudo命令进行安装
sudo bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"
1.2.检查httprunner安装版本:httprunner -V or hrun -V 

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

1.3.检查hrp是否安装成功:hrp -h     

在这里插入图片描述

2.通过pip安装:(通用Mac&Windows)
2.1.建议:安装到虚拟环境下,这样可切换使用不同版本的httprunner

//指定版本安装,不加默认下载最新
pip install httprunner==4.3.5      
//“V”一定要大写,不然如下图报错
2.2.查看版本:hrun -V        

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

2.3.解决方法
//更新升级pip
2.3.1.python -m pip install --upgrade pip     

2.3.2.升级后依然下载失败,可能pip源内找不到httprunner(Windows常见),更新pip的镜像源即可

//豆瓣镜像源 
pip install -i https://pypi.douban.com/simple httprunner    

//清华大学镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn httprunner  

七.hrp下载

1.安装httprunnerV4.3.5后,还无法使用hrp命令行工具,需要下载编译产物

1.1.在GitHub Releases页面中自行选择版本进行下载

在这里插入图片描述

2.配置hrp的环境变量
2.1.Mac:打开终端进入配置 

//如果使用的是bash shell  
2.2.vim ~/.bash_profile    

//如果使用的是zsh shell 
2.3.vim ~/.zshrc	     

2.4.进入后添加环境变量:(vim:敲“i”->Enter进入编辑)
export PATH="/usr/local/hrp/bin:$PATH"    
## /usr/local/hrp/bin/hrp 为hrp的文件路径 保存并关闭文件
## (vim:保存退出=>Esc-->:wq-->Enter 保存并退出)

在这里插入图片描述

2.5.生效配置: 
source ~/.bash_profile 
source ~/.zshrc

2.6.验证环境变量配置: hrp -h or hrp -v

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

3.配置hrp的环境变量
3.1.Windows:将下载的包解压后的hrp.exe放在C盘httprunner文件目录下(自定义目录)     

3.2.在【我的电脑=>属性=>高级系统设置=>环境变量=>系统变量】,在PAHT下新
增变量:C:\\httprunner确认保存即可
3.3.验证环境变量配置:hrp -h or hrp -v

在这里插入图片描述
八.创建手脚架项目

1.使用命令hrp startproject demo新增httprunner项目并命名为demo

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

九.录制生成HAR文件

1.采用Charles等抓包工具制HAR文件,以及Chrome等浏览器均可以导出HAR格式的文件

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

十.将录制生成的HAR转换生成测试用例

1.HttpRunner4.x将所有的转换功能都集中在hrp convert一个指令中
1.1.通过执行hrp convert -h可以查询该指令的功能简介、用法和各个选项的介绍
# 将HAR文件默认转换成转换成Json文件--文件名为xxx_test.json 
hrp convert --from-har xxx.har   

# 将HAR文件转换成YAML文件--文件名为xxx_test.yaml    
hrp convert --from-har xxx.har --to-yaml        

# 将HAR文件转换成Json文件--文件名为xxx_test.json 
hrp convert --from-har xxx.har --to-json         

# 将HAR文件转换成pytest文件
hrp convert --from-harxxx.har --to-pytest      

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

2.注释

2.1.执行hrp convert --from-har xxx.har --to-pytest命令
2.2.会先将xxx.har转化成xxx_test.json
2.3.然后再将xxx_test.json转化成xxx_test_test.py
3.hrp convert指令支持指定目录输出,--output-dir后接测试用例的期望输出目录的路径

3.1.用于将转换生成的测试用例输出到对应的文件夹
# 输入文件到当前目录下的demo/cases文件夹中
hrp convert --from-har xxx.har --to-pytest --output-dir demo/cases    

在这里插入图片描述

4.执行测试用例:JSON/YAML(/pytes)类型的测试用例文件,httprunnerV4.x使用hrp run命令执行
hrp run xxx.json           ##执行json测试用例    
hrp run xxx.yaml          ##执行yaml测试用例 
hrp run testcases/       ##执行testcases文件下所有测试用例
4.1.pytest文件可通过pytest命令执行改测试用例文件:pytest xxx.py 

4.2.目前的HttpRunner支持运行pytest的测试用例进行接口测试

4.3.由于HttpRunner wraps pytest,因此pytest所有的参数都可以与hrp命令一起使用

在这里插入图片描述
十一.手工编写测试用例

1.pytest,YAML和JSON格式的测试用例完全等价,包含的信息内容也完全相同
2.在httprunner中,测试用例组织主要基于三个概念
2.1.测试用例集(testsuite):
对应一个YAML/JSON/Python文件,包含单个或多个测试用例文件
通俗来讲,测试用例集就是「一堆」测试用例
对应地,HttpRunner 除了支持指定单个文件来运行某一测试用例
也支持指定多个文件或指定文件夹来运行一整个测试用例集

2.2.测试用例(testcase):   
对应一个YAML/JSON/Python文件,包含单个或多个测试步骤

2.3.测试步骤(teststep):    
对应YAML/JSON/Python中teststeps下的一个节点
描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、检验结果等
3.pytest,YAML和JSON格式的测试用例,用例结构整体结构都包含两部分
3.1.config:每个测试用例都必须有config部分,作为整个测试用例的全局配置项,用于配置用例

在这里插入图片描述

3.2.teststeps:包含测试步骤相关信息,测试用例存在顺序关系

3.2.1.运行时将从前往后依次运行各个测试步骤,其中步骤可以引用其他测试用例

在这里插入图片描述
十二.手工编写测试用例–示例

1.创建request.yaml文件

在这里插入图片描述

2.创建request.py文件

在这里插入图片描述

十三.手工编写测试用例–实例

1.创建homepage.yaml文件

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

2.创建homepage.py文件

在这里插入图片描述
在这里插入图片描述
十四.变量variables

1.声明变量和引用是经常用到的,引用变量方式有两种:$var或${var} 

1.1.通过关键字variables定义变量主要在config和step中
2.这两者的区别
2.1.在config中定义的变量为全局变量的,范围比较大
2.1.1.也就是整个测试用例(testcase)的所有地方都可以引用

2.2.在step中定义的变量为局部变量,范围比较小,局限于当前测试步骤(teststep)
3.注释:

3.1.config全局变量和ste局部变量名最好不要相同
3.1.1.当出现相同时,step变量优先级大于config变量

在这里插入图片描述

十五.提取extract返回结果

1.extract:V4支持2种响应结果字段提取方式
1.1.jmespath表达式:响应结果为JSON结构,采用jmespath表达式进行参数提取

1.2.正则表达式(regex):返回的非JSON格式,可以用正则表达式(regex)提取
2.extract提取的对象有5种类型
2.1.headers:从响应 headers 中提取字段,例如 headers.name   

2.2.cookies:从响应 cookies 中提取字段,例如 cookies.Token   

2.3.body:从响应 body 中提取字段,例如 body.args.foo1   

2.4.status_code:提取响应状态码,例如 200404   

2.5.proto:提取协议类型,例如 “HTTP/2.0”、“HTTP/1.1

在这里插入图片描述

十六.断言validate

1.断言validate:使用jmespath提取JSON响应正文(text/html格式用正则表达式提取)并使用预期值进行验证

2.提取结果:jmespath表达式或正则表达式提取

3.预期值:这里也可以使用指定的预期值、变量或函数引用

在这里插入图片描述

4.断言方式

在这里插入图片描述
十七.辅助函数-debugtalk

1.v4支持go语言和Python语言写辅助函数

1.1.在根目录编辑debugtalk.py文件写辅助函数实现自动化生成动态参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
十八.辅助函数-debugtalk–引用(与引用变量方式一致)

1.实例:homepage.yaml

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

十九.参数化parameters

1.实现参数化使用parameters关键字,数据源有三种方式
1.1.在yaml文件中直接写测试数据源,最为简单,适合参例表比较少的场景

1.2.测试数据源写到csv文件,该种方式需要准备CSV数据文件,适合数据量比较大的情况

1.3.自定义函数,函数返回列表形式数据,该种方式最为灵活
1.3.1.可通过自定义Python函数实现任意场景的数据驱动机制
1.3.2.当需要动态生成参数列表时也需要选择该种方
2.单个参数进行参数化

在这里插入图片描述

3.关联性参数化:常用-账号密码

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

4.笛卡尔积组合
4.1.假如测试用例中定义多个参数
4.1.1.那么测试用例在运行时会对参数进行笛卡尔积组合,覆盖所有参数组合情况
账号有4[admin1, admin2, admin3, admin4]

密码有4["123456", "123456", "123456", "123456"] 

用笛卡尔积组合的话,就是4*4=16种组合

在这里插入图片描述

5.CSV文件:对于CSV数据源文件,需要遵循如下几项约定的规则
5.1.CSV文件中的第一行必须为参数名称,从第二行开始为参数值,每个()值占一行

5.2.若同一个CSV文件中具有多个参数,则参数名称和数值的间隔符需实用英文逗号

5.3.在YAML/JSON文件引用CSV文件时,文件路径为基于项目根目录(debugtalk.py所在路径)的相对路径

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

6.外部函数(debugtalk)
6.1.用debugtalk.py中自定义的函数生成参数列表,生成的参数列表必须为list of dict 的数据结构

6.2.需对user_id进行参数化数据驱动,那么就可以在debugtalk.py中定义一个函数,返回参数列表

在这里插入图片描述
在这里插入图片描述
二十.环境变量.env

1.在前面最初新建httprunner项目后,在根目录下自动生成.env文件

1.1.V4版本中内置了函数ENV读取环境变量的值,可直接使用${ENV(key)}进行引用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二十一.原生HTML测试报告

1.V4版本自带原生的html测试报告,可通过hrp run -h得知:hrp run <用例> -g 

1.1.(不管在那个目录下运行,同一根目录会生成results文件件)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二十二.Allure测试报告

在这里插入图片描述
在这里插入图片描述
二十三.Allure下载及安装

1.下载安装Allure

2.配置环境变量(Windows&Mac)

3.验证环境变量是否配置成功: allure  --version  显示版本信息则配置成功

4.在Python中下载allure-pytest插件:pip install allure-pytest  

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

二十四.Allures使用

1.执行用例并生成报告:存放路径,--clean-alluredir清空历史数据
pytest  <用例> -s -q  --alluredir  ./results  --clean-alluredir   

2.运行后可以看到生成了txt,json,xml等格式的文件,还未生成HTML格式

3.接着可执行:allure generate report/ -o results/html  --clean  

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

二十五.其他

1.引用其他用例

在这里插入图片描述

2.upload文件上传:需要2个依赖包

pip install requests_toolbelt filetype

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

3.将测试报告发送邮件及发送到群聊

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

4.后续计划 
4.1.补充完善yaml接口用例 
4.2.与Jenkins集成实现定时执行 
4.3.Httprunner4.3.5+Locust 实现性能压测	 
4.4.Httprunner4.3.5+Locust+Grafana实现性能监控

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢卡平头哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值