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中使用item()方法遍历字典的例子
Aug 26 Python
深入解析Python中的集合类型操作符
Aug 19 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
详解python中的装饰器
Jul 10 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
Python实现序列化及csv文件读取
Jan 19 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 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人民币金额数字转中文大写的函数代码
2013/02/27 PHP
php实现图片添加水印功能
2014/02/13 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
js验证上传图片的方法
2015/05/12 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
javascript实现日历效果
2019/06/17 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
Python实现Kmeans聚类算法
2020/06/10 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
Python连接mysql方法及常用参数
2020/09/01 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
数据库面试要点基本概念
2013/10/31 面试题
大学自主招生自荐信
2013/12/16 职场文书
中药学专业求职信
2014/05/31 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
树转促学习心得体会
2014/09/10 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
2014年库房工作总结
2014/11/26 职场文书
公司费用报销管理制度
2015/08/04 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL