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 相关文章推荐
python正则分组的应用
Nov 10 Python
python操作摄像头截图实现远程监控的例子
Mar 25 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python映射拆分操作符用法实例
May 19 Python
基python实现多线程网页爬虫
Sep 06 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
Java文件与类动手动脑实例详解
Nov 10 Python
Python读取csv文件实例解析
Dec 30 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
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
Python安装模块的常见问题及解决方法
2018/02/05 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
HTML5标签小集
2011/08/02 HTML / CSS
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
五年级英语教学反思
2014/01/31 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
地方课程教学计划
2015/01/19 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
详解JAVA的控制语句
2021/11/11 Java/Android
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle