接口自动化框架封装思想的建立。httprunner(热加载:动态参数),去应用 意义不大。
day1
一、什么是Httprunner?
1.httprunner是一个面向http协议的通用测试框架,目前最新的版本3.X。以前比较流行的 2.X的版本。
2.它的思想是只需要维护yaml/json/py文件就可以实现接口自动化测试,性能测试,线上 监控,持续集成。
3.架构图 
二、httprunner的设计理念
1.充分复用开源项目,不追求重复的造轮子,而是将市面强大的轮子转成战车,降低框架的 开发成本以及学习成本。 
 2.遵循约定大于临时配置的准则。(合同,考勤)
3.配置文件组织测试用例。
三、httprunner环境安装
1.python环境:3.7.3 
2.安装httprunner pip install httprunner
 验证:hrun -V 
3.必须知道的5个httprunner的命令
 httprunner:主命令,用于所有功能 
 hrun:用于运行yaml/json/pytest测试用例。
 hmake:用于将yaml/json测试用例转化成pytest文件。
 har2case:用于将har文件转化成yaml/json/pytest测试用例。
 locusts:用于性能测试
四、httprunner快速上手
1.使用抓包工具:fiddler、charles操作一遍抓包。导出har文件。 
 2.通过har2case命令把har文件转化成yaml/json/pytest文件格式。 
 har2case get_token.har 生成pytest文件格式的测试用例 
 har2case get_token.har -2y 生成yaml格式的测试用例 
 har2case get_token.har -2j 生成json格式的测试用例
运行: 
hrun get_token.yml 
hrun get_token.json 
hrun get_token_test.py 
 发现运行完成之后py文件里面的断言自动的去掉了,说明不管是运行yml、json其实最终都 会重新成py文件运行。
五、YAML测试用例结构分析
每一个测试用例都是一个list of dict(字典列表)结构,其中包括config【配置】和 teststeps【步骤】 
 [{},{},{}]
cofig:配置 
name:用例名称
variables:全局变量 
verify:是否开启https验证
teststeps:步骤 
 name: /cgi-bin/token 步骤名称 
 request: 请求 
 headers: 请求头 
 Accept: ‘/’ 
 Accept-Encoding: gzip, deflate, br 
 Cache-Control: no-cache 
 Connection: keep-alive 
 Host: api.weixin.qq.com 
 Postman-Token: 50f8bb1a-7826-49f8-835e-ec889063b7cc 
 User-Agent: PostmanRuntime/7.28.0
method: GET 请求方式 
 params: 请求参数 
 appid: wx74a8627810cfa308 
 grant_type: client_credential 
 secret: e40a02f9d79a8097df497e6aaf93ab80 
 url: https://api.weixin.qq.com/cgi-bin/token 请求路径 
 validate:断言 
 - eq: 
 - status_code 
 - 200 
 - eq: 
 - headers.Content-Type 
 - application/json; encoding=utf-8
六、接口关联
在request标签下加一个extract标签提取返回值,通过content或body提取
extract: 
 aaa: content.access_token 
然后通过$变量名使用 
 params: 
access_token: $aaa
七、动态参数:通过debugtalk.py的热加载的方式实现。
第一步:创建一个debugtalk.py文件,然后再里面写一个函数。 
第二步:在yaml文件中通过${函数名()}的方式调用。
八、环境变量
开发环境,测试环境,线上环境。预发布环境。 在config下加入: 
 base_url: https://api.weixin.qq.com
九、全局变量和局部变量
config下的variables是全局变量 
teststeps:下的variables是局部变量 
- name: /cgi-bin/tags/update
有两种写法: 
1.换行的键值对 ,上面展示的是键值对的展示
2.{}的方式
十、生成HTML格式的报告
要在目录下运行
hrun httprunneres --html=httprunneres/report.html
就是pytest里面pytest-html插件的报告一模一样。
day2
十一、httprunner常规的关键字详解
httprunner测试用例的结构 
config:配置 
name:名称 
variables:全局变量 
verify:https协议 
base_url:环境变量 
teststeps:步骤 
name:步骤名称 
request:请求 
headers:请求头 
method:请求方式 
params:参数 
url:请求路径 
cookie:cookie信息 
json:用于发送http请求正文 
data:用于发送http请求正文 
extract:提取(通过content或body提取,json提取器。支持正则表达式提取。) 
validate:断言 
eq相等 
equals相等 str_eq(str(a)=str(b)) 
lt:小于 
le:小于或等于 
gt:大于 
ge:大于或等于 
contains:包含
简化: 
name:接口名称 
request:请求 
headers:请求头 
method:请求方式 
data:参数 
url:请求路径 
cookie:cookie信息 
extract:提取(通过content或body提取,json提取器。支持正则表达式提取。) 
validate:断言 
equals相等 
str_eq(str(a)=str(b)) 
contains:包含
十二、httpruner接口自动化项目架构
生成httprunner框架:
先要切换到项目的根目录,使用:httprunner startproject 项目名(没有虚拟环境)
har:存放har文件 
reports:存在报告
testcases:存放测试用例 
api:存放yml文件,接口定义。 
data:数据驱动 
testsuites:测试套件 
.env:存放环境变量 
.gitignore 当你的项目使用git做版本控制的时候,添加在此文件中的文件不会被git管理。 
debugtalk,py实现热加载。
分层架构:三层 
1.接口定义层(api):为了更好的管理接口描述,每个一个接口定义都应该尽量的能够单 独运行。 
2.测试用例层(testcases) 
3.测试套件层(testsuites) 
关系:testcases调用api层(使用api关键字),testsuites调用testcases层。(使用 testcase关键字)
十三、环境变量
环境变量可以写入.env文件。 
然后在api接口定义层里面使用:${ENV(变量名)}获取环境变量。 
httprunner实际的工作应用其他不多,只有一小部分的公司用它做接口自动化,主要目 的:思想。
每个项目的接口不一样。 
每个公司的框架都是不一样的。
day3
appid,grant_type,secret,assert_str
"wx74a8627810cfa308","client_credential","e40a02f9d79a8097df497e6aaf93ab80","access_token"
"","client_credential","e40a02f9d79a8097df497e6aaf93ab80","access_token"
"wx74a8627810cfa308","","e40a02f9d79a8097df497e6aaf93ab80","access_token"
今日内容:接口自动化框架封装思想建立之httprunner框架(下).pdf