Python中requests做接口测试的方法


Posted in Python onMay 30, 2021

一、介绍

Requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests是Python语言的第三方的库,专门用于发送HTTP请求

二、前提

pip install requests

三、get的请求

3.1 GET无参请求

r  = requests.get('http://www.baidu.com')

3.2 GET传参

payload = {'key1': 'value1', 'key2': 'value2', 'key3': None}
r = requests.get('http://www.baidu.com ', params=payload)

案例:测试聚合数据

代码

import requests
class UseRequestClass():
    #get传参的第一种方式
    def XWTTMethod(self):
        r = requests.get("http://v.juhe.cn/toutiao/index?type=guonei&key=4b72107de3a197b3bafd9adacf685790")
        print(r.text)
    #get传参的第二种方式
    def XWTTMethod(self):
        params = {"type":"guonei","key":"4b72107de3a197b3bafd9adacf685790"}
        r = requests.get("http://v.juhe.cn/toutiao/index",params=params)
        print(r.text)

四、post请求

类似python中的表单提交

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)

案例:测试聚合数据

代码

import requests
class UseRequestClass():
    def XWTTPostMethod(self):
        params = {"type":"guonei","key":"4b72107de3a197b3bafd9adacf685790"}
        r = requests.post("http://v.juhe.cn/toutiao/index",params=params)
        #print(r.status_code)
        return r.status_code

五、Requests响应

r.status_code        响应状态码
r.heards             响应头
r.cookies            响应cookies
r.text               响应文本
r. encoding          当前编码
r. content          以字节形式(二进制)返回

最常用的是根据响应状态码判断接口是否连通,经常用于做接口中断言判断

六、Request扩充

1.添加等待时间
requests.get(url,timeout=1)          #超过等待时间则报错

2.添加请求头信息
requests.get(url,headers=headers)    #设置请求头

3.添加文件
requests.post(url, files=files)      #添加文件

文件传输

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

七、requests+pytest+allure

7.1 流程如下

读取文件中的数据

requests拿到数据请求接口返回状态码

通过断言验证返回状态码和200对比

生成allure的测试报告

7.2 模块总览

dataDemo(存放数据)>> readDemo(读取数据)

useRequests(发送请求)>>testDemo(生成报告)

Python中requests做接口测试的方法

7.3 读取csv文件流程

7.3.1 存储数据(csv)

通过excel另存为csv即可。

Python中requests做接口测试的方法

7.3.2 读取数据(readDemo)

Python中requests做接口测试的方法

代码展示

import csv
class ReadCsv():
    def readCsv(self):
        item = []
        rr = csv.reader(open("../dataDemo/123.csv"))
        for csv_i in rr:
            item.append(csv_i)
        item =item [1:]
        return item

7.3.3 request请求接口返回状态码

Python中requests做接口测试的方法

代码展示

import requests
from readDataDemo.readcsv import ReadCsv
r = ReadCsv()
ee = r.readCsv()
# print(ee)
class RequestCsv():
    def requestsCsv(self):
        item = []
        for csv_i in ee:
            if csv_i[2] =="get":
                rr = requests.get(csv_i[0],params=csv_i[1])
                item.append(rr.status_code)
            else:
                rr = requests.post(csv_i[0],data=csv_i[1])
                item.append(rr.status_code)
        return item

7.3.4 pytest断言设置并结合allure生成测试报告

Python中requests做接口测试的方法

代码展示

import pytest,os,allure
from userequests.userequestsDemo.requestscsv import RequestCsv
r = RequestCsv()
ee = r.requestsCsv()
print(ee)
class TestClass02():
    def test001(self):
        for code in ee:
            assert code == 200
if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'test_02csv.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)

7.3.5 测试报告展示

Python中requests做接口测试的方法

7.4 读取excle文件流程

7.4.1 存储数据(xlsx)

Python中requests做接口测试的方法

7.4.2 读取数据(readDemo)

from openpyxl import load_workbook
class Readxcel():
    def getTestExcel(self):
        # 打开表
        workbook = load_workbook("G:\python\pythonProject\pytest05a\\requestdemo\\a.xlsx")
        # 定位表单
        sheet = workbook['Sheet1']
        print(sheet.max_row)  # 3 行
        print(sheet.max_column)  # 3 列
        test_data = []  # 把所有行的数据放到列表中
        for i in range(2, sheet.max_row + 1):
            sub_data = {}  # 把每行的数据放到字典中
            for j in range(1, sheet.max_column + 1):
                sub_data[sheet.cell(1, j).value] = sheet.cell(i, j).value
            test_data.append(sub_data)  # 拼接每行单元格的数据
        return test_data
t = Readxcel()
f = t.getTestExcel()
print(f)

7.4.3 request请求接口返回状态码

import requests
from requestdemo.readexcel import Readxcel
class GetStatusCode():
    def getStatusCode(self):
        t = Readxcel()
        f = t.getTestExcel()
        item = []
        for excel_i in f:
            if excel_i["method"] == "get":
                rr = requests.get(excel_i["url"], params=excel_i["params"])
                item.append(rr.status_code)
            else:
                rr = requests.post(excel_i["url"], data=excel_i["params"])
                item.append(rr.status_code)
        return item
print(GetStatusCode().getStatusCode())

7.4.4 pytest断言设置并结合allure生成测试报告

import allure, pytest, os
from requestdemo.getStatusCode import GetStatusCode

get = GetStatusCode()
statusCodes = get.getStatusCode()

class TestReadExcel():
    def testReadExcel(self):
        for code in statusCodes:
            assert code == 200
if __name__ == "__main__":
    # 生成测试报告json
    pytest.main(["-s", "-q", '--alluredir', 'report/result', 'testreadexcel.py'])
    # 将测试报告转为html格式
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)

7.4.5:测试报告展示

Python中requests做接口测试的方法

到此这篇关于Python中requests做接口测试的方法的文章就介绍到这了,更多相关Python requests接口测试内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解Django框架中的视图级缓存
Jul 23 Python
Python验证企业工商注册码
Oct 25 Python
python遍历一个目录,输出所有的文件名的实例
Apr 23 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
Python基于pip实现离线打包过程详解
May 15 Python
pytorch fine-tune 预训练的模型操作
Jun 03 Python
python脚本框架webpy模板控制结构
Nov 20 Python
python关于集合的知识案例详解
May 30 #Python
教你漂亮打印Pandas DataFrames和Series
pytorch 实现多个Dataloader同时训练
python 如何做一个识别率百分百的OCR
基于PyTorch实现一个简单的CNN图像分类器
May 29 #Python
python 爬取华为应用市场评论
python 开心网和豆瓣日记爬取的小爬虫
May 29 #Python
You might like
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
Vue实现手机计算器
2020/08/17 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
Python深入学习之特殊方法与多范式
2014/08/31 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
Python 文件管理实例详解
2015/11/10 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
销售经理工作职责范文
2013/12/03 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
前台文员职责范本
2014/03/07 职场文书
爱心活动计划书
2014/04/26 职场文书
个人安全承诺书
2014/05/22 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技