pytest接口自动化测试框架 | 对requests进行二次封装
2023-09-14 09:09:07 时间
视频来源:B站《冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频【软件测试】》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:pytest接口自动化测试框架 | 汇总_COCOgsta的博客-CSDN博客
在项目中要考虑不同的接口请求方式,有的接口时get,有的接口时post,并且参数也是不一样的,有些要的是json传参,有的用data传参,有些用put,有些用delete,要的不同方式。
所以我们提前封装,封装意味着这个方式能适应所有的请求
- 通过同一个session发送请求 为什么?
- 需要传入不同的请求方式,地址,参数类型,数据,可能还有其他数据。根据不同的数据类型传不同的处理
test2.py
import requests
class HttpClient:
# 只要用到这个类 就会进入到init这个函数里面去
def __init__(self):
self.session = requests.session()
# 封装请求 post delete get put .. 请求方式
# 接口地址 不同的接口
# 接口参数 不同的参数
# 参数类型 表单 json
# 请求头 数据类型设置。。 **kwargs 接受几个参数 post Post poST
# 测试登录 请求方式post 地址login 参数admin password,数据类型 json
def send_request(self, method, url, param_type, data=None, **kwargs):
# 请求方式转成大写 POST
method = method.upper()
# 参数类型转成大写 JSON
param_type = param_type.upper()
# 判断 post get
if 'GET' == method:
response = self.session.request(method=method, url=url, params=data, **kwargs)
elif 'POST' == method:
if 'FROM' == param_type:
# 参数 json 提交 data提交 判断传的类型
response = self.session.request(method=method, url=url, data=data, **kwargs)
else:
response = self.session.request(method=method, url=url, json=data, **kwargs)
elif 'DELETE' == method:
if 'FROM' == param_type:
# 参数 json 提交 data提交 判断传的类型
response = self.session.request(method=method, url=url, data=data, **kwargs)
else:
response = self.session.request(method=method, url=url, json=data, **kwargs)
elif 'PUT' == method:
if 'FROM' == param_type:
# 参数 json 提交 data提交 判断传的类型
response = self.session.request(method=method, url=url, data=data, **kwargs)
else:
response = self.session.request(method=method, url=url, json=data, **kwargs)
else:
raise ValueError
return response
def close_session(self):
self.session.close()
test3.py
# 测试登录
from test2 import HttpClient
httpclient = HttpClient()
# 登录接口
url = 'http://39.98.138.157:5000/api/login'
data = {"password": "123456", "username": "admin"}
# res = requests.post(url, json=data)
# method, url, param_type, data, **kwargs
res = httpclient.send_request(method='post', url=url, param_type='json', data=data)
print(res.json())
# 工牌值取出来 放在一个变量中 下个接口使用的时候 直接拿变量
# 取值 转成的是字典 字典怎么取值 键值对 拿到键就拿到值
token = res.json()['token']
url = 'http://39.98.138.157:5000/api/getuserinfo'
header = {'token': token}
res = httpclient.send_request(method='get', url=url, param_type='json', headers=header)
print(res.json())
相关文章
- 写表单你还在复制粘贴吗?推荐你使用基于Vant-UI二次封装的数据驱动式表单自动生成组件
- Pytest(16)随机执行测试用例pytest-random-order[通俗易懂]
- Pytest(18)pytest接口自动化完整框架思维导图[通俗易懂]
- vue弹窗组件封装_vue弹出框组件
- React-Hooks怎样封装防抖和节流-面试真题
- pytest学习和使用17-Pytest如何重复执行用例?(pytest-repeat)
- Java-封装详解
- 【笔记】PHP封装的不错的一个Curl方法
- 【Android RTMP】RTMPDump 封装 RTMPPacket 数据包 ( 封装 SPS / PPS 数据包 )
- Python面向对象编程-三大特性-封装
- 使用java执行命令简易封装类详解编程语言
- MySQL C封装实战:从构建到应用(mysqlc封装)
- 开源新闻速递:snap 软件包封装工具 Snapcraft 2.9 发布
- MongoDB封装:极致性能与无忧畅通(mongodb 封装)
- 为自己而封装Redis从尝试到成功(自己封装redis)
- ShowPage显示“上一页下一页”等信息的封装代码
- 封装了一个Java数据库访问管理类
- 自己的js工具_Form封装
- JavaScript对Cookie操作的封装小结