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妹子图简单爬虫实例
Jul 07 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
Django学习教程之静态文件的调用详解
May 08 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
python删除字符串中指定字符的方法
Aug 13 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
关于Tensorflow分布式并行策略
Feb 03 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
python3 logging日志封装实例
Apr 08 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 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更新修改excel中的内容实例代码
2014/02/26 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
python操作MySQL数据库具体方法
2013/10/28 Python
Python yield 小结和实例
2014/04/25 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
django之自定义软删除Model的方法
2019/08/14 Python
django中间键重定向实例方法
2019/11/10 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
音乐专业应届生教师求职信
2013/11/04 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
2014庆六一活动方案
2014/03/02 职场文书
家长通知书家长评语
2014/04/17 职场文书
门面房租房协议书
2014/12/01 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS