接口自动化篇

接口自动化

Python+requests+pytest/unittest框架

pytest: python + requests + pytest + parameterizes + yaml 教据驱动+ alure

一、python

二、pytest / unittest用例管理框架

python : unitest pytest
1、主要做什么?
1.发现测试用例:从多个 py 文件中收集并且加载测试用例。
2.执行测试用例:将测试用例按照一定的顺序和条件执行,并生成结果。
3.测试判断:通过断言判断预期结果和实际结果的差异。
4.测试报告:统计测试进度,耗时,通过率,生成 HTML 测试报告。

2、测试用例编写规则:
unittest :
1.首先导入 import unittest
2.继承: unittest . TestCase
3.测试用例必须以 test 开头
pytest :
1.测试文件必须以 test_开头或者_test 结尾
2.测试类名必须以 Test 开头
3.测试方法必须以 test_开头
结论(区别): unitest 需要依赖于 unittest . TestCase 这个类;而 pytest 不需要依赖任何类。解耦合:( java jsp + serlet ),前后端分离。
pytest 默认规则
默认规则

4.pytest 配置文件(可修改默认规则)
在这里插入图片描述

3、pytest用例管理框架的作用(第5节课)
#使用前提:安装pytest: pip install pytest (Python安装路径下)
发现测试用例:从多个py文件中通过默认规则找到测试用例
执行测试用例:顺序和条件
判断测试用例:断言
生产测试报告:HTML 、allure
Python:unitest、pytest
Java:Junit、testng
9)#pytest全局观
可以和所有自动化测试工具selenium、requests、appium结合,实现web自动化、接口自动化、APP自动化;
跳过用例以及失败的测试用例重跑;
结合allure生成美观的测试报告;
结合Jenkins持续集成;
强大的插件:
pytest 自身
Pytest-html #生成html报告
Pytest-xdist #多线程运行
Pytest-ordering #改变测试用例执行顺序
Pytest-rerunfailures #失败用例重跑
allure-pytest 生成allure测试报告
(第6节课:项目中一般都会使用requirements.txt 文件保存插件名称,通过pip install –r xxx.txt 在“terminal”安装)
1.requirements.txt可以通过pip命令自动生成和安装。
2.生成requirements.txt文件:pip freeze > requirements.txt
3.安装requirements.txt依赖:pip install -r requirements.txt

三、requests库

Requests第三方库,主要用于发送http请求,做接口自动化
安装命令: pip install requests(需切换至Python安装目录下执行)
1、全局观
请求
requests.get() 发送get请求
requests.post() 发送post请求
requests.delete() 发送delete请求
requests.put() 发送put请求
requests.request() 最核心方法

响应:response 对象
import requests

resp=requests.requests()
#返回字符串数据(文本)
print(rep.text)
#返回字典格式数据(json串)
print(rep.json)
#返回字节格式数据
print(rep.conent)
#状态码
print(rep.status_code)
#返回cookie信息
print(rep.cookies)
#返回响应头信息
print(rep.headers)
#返回编码格式
print(rep.encoding)

2、接口实战
1)请求方式:get、post、delete、put
2)参数方式:键值对、json格式、文件格式
import requests
url=’’
data={“tag”:
{“id”:"", “name”:"" }}
rep=requests.post(url=url,json=data)
print(rep.json())
线性脚本:no

3)注意点—重要(第3节课)
#get请求通过params传参;
#post通过data/json传参,他们的区别是什么;
1.Data
数据报文:dict字典格式,那么默认请求头:applilcation/x-www-from-urluncoded,表示以form表单方式传参,格式:a=1&b=2&c=3
数据报文:str字符串类型,那那么默认请求:text/plain
2.json
数据报文:不管是dict还是str类型,默认都是applilcation
json.dump(data) 序列化 把dic字典格式数据转换成str格式传参
json.loads(data)反序列化 把str格式转换成dic字典格式
总结:data只能传简单的键值对的dic/str格式;json一般只能传dic字典格式(简单和嵌套都行)

4)#文件上传通过files传参(3、节课)
待学习
5)#带请求头
Headers={“a”:””, “b”:”}

6)#正则表达(比如返回的是HTML时)
Re.search(‘左边界右边界value=”(.*?)”’,rep.text)[1]
rep.text—取值的地方、[1]—第一个值

7)鉴权
cookie鉴权:
网页接口进本都要做cookie鉴权(这种不常用)
通过session实现鉴权(常用)
全局变量:session = requests.session()
第4节课(待学习)

10)运行方式
1.主函数方式(命令行方式)
-v 输出更加详细的运行信息
-s 输入调试信息
-n 多线程运行 #pytest.main([‘-vs’,’-n=2’])
–reruns 失败用例重跑 #pytest.main([‘-vs’,’–reruns=2’])
–html=报告路径 ##pytest.main([‘-vs’,’–html=./report.html’])

2.实际工作中用pytest.ini 配置文件来配置运行(第7节课)

11)前后置 夹具 (第8节)

四、测试框架封

1)#接口自动化框架封装第一步:统一请求方式
requests.request() 最核心方法
rep=requests.request(“get/post”,url=,data/json=)
2)鉴权
通过session实现鉴权(常用)
全局变量:session = requests.session()

#pip版本过低导致,所以只需要升级pip即可
百度上的 easy_install -U pip 命令已经弃用了,应该使用 python -m pip install -U pip 命令来升级

1、接口自动化测试框架封装(接口关联封装)
通过一个关联的yaml文件实现
读取yaml
写入yaml

2、 pytest 接口断言
assert
1.assert ‘值’ in rep.json()
2.assert ‘值’==‘值’

3、 数据驱动(参数化)
(1)pytest --parameterizes + yaml 数据驱动
1.pytest 中的装饰器@ pytest . mark . parametrize ()的基础用法。
数据驱动:其实就是把我们测试用例的数据放到 excel , yami , csv , mysql .然后通过去改变数据达到改变测试用例的执行结果。
2.@ pytest . mark . parametrize ( args _ name , args _ value )
args _ name :参数的名称
args _ value :参数的值( list , tuple ,字典列表,字典元祖),参数值有多少个那么方法就会执行多少次
3.新建yaml文件
4.读取yaml

(2)unittest – ddt

4、pytest 结合 alure - pytest 生成 allure 测试报告
1.官网下載 alur :https://github.com/allure-framework/allure2/releases放到没有中文的路径下
2.然后把 allure bin目录安装路径 配置到环境变量的 path 里面
3.重启 pycharm 通过: alure – version 验证
4.执行命令
(1)生成临时的 json 文件的报告。-- alluredir temp
(2)通过临时的 json 文件生成 alure 报告。
os . system ()
在这里插入图片描述
5.alure报告的定制


版权声明:本文为lim13760114815原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。