zl程序教程

您现在的位置是:首页 >  前端

当前栏目

pytest接口自动化测试框架 | 对requests进行二次封装

2023-09-14 09:09:07 时间

视频来源:B站《冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频【软件测试】》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:pytest接口自动化测试框架 | 汇总_COCOgsta的博客-CSDN博客


在项目中要考虑不同的接口请求方式,有的接口时get,有的接口时post,并且参数也是不一样的,有些要的是json传参,有的用data传参,有些用put,有些用delete,要的不同方式。

所以我们提前封装,封装意味着这个方式能适应所有的请求

  1. 通过同一个session发送请求 为什么?
  1. 需要传入不同的请求方式,地址,参数类型,数据,可能还有其他数据。根据不同的数据类型传不同的处理

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())