python中requests接口测试

介绍:

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

前提:

先下载pip install requests

  1. 在python中点击输出框中的Terminal,然后查看是否进入到当前文件命令中,如果没有,则cd进入
  2. 分别输入pip install pytest 和 pip install pytest-html,下载成功会显示版本信息,如果没有则会显示报错

python中requests接口测试_第1张图片

get的请求

get无参请求:

r = requests.get('http://www.baidu.com')
 
get传参:
 
payload = {'key1': 'value1', 'key2': 'value2', 'key3': None}
r = requests.get('http://www.baidu.com ', params=payload)
 
案例:
 
python中requests接口测试_第2张图片
 
代码:
import requests
class RequestClass():
    def requestMethod(self):
        # 第一种方法
        # url="http://v.juhe.cn/toutiao/index?type=&page=&page_size=&is_filter=&key=21ba634bdc5bfecb4539316f5b31effb"
        # request=requests.get(url)
        # print(request.url)
        # print(request.text)
        # print(request.content)
        # print(request.status_code)

        # 第二种
        # type = & page = & page_size = & is_filter = & key = 21ba634bdc5bfecb4539316f5b31effb
        url = "http://v.juhe.cn/toutiao/index"
        zd={"type":"page","key":"21ba634bdc5bfecb4539316f5b31effb"}
        rr=requests.get(url,params=zd)
        print(rr.text)

rec=RequestClass()
rec.requestMethod()

post请求:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
案例:
python中requests接口测试_第3张图片
 
 
 
代码:
import requests
# url="http://v.juhe.cn/toutiao/index?type=&page=&page_size=&is_filter=&key=21ba634bdc5bfecb4539316f5b31effb"
class UseRequestClass():
    def XWTTPostMethod(self):
       params = {"type": "page", "key": "21ba634bdc5bfecb4539316f5b31effb"}
       r = requests.post("http://v.juhe.cn/toutiao/index", params=params)
       # print(r.status_code)
       return r.status_code



rec = UseRequestClass()
print(rec.XWTTPostMethod())
Requests 响应
 
 
r.status_code 响应状态码
r.heards 响应头
r.cookies 响应 cookies
r.text 响应文本
r. encoding 当前编码
r. content 以字节形式(二进制)返回
最常用的是根据响应状态码判断接口是否连通,经常用于做接口中断言判断
 
扩充:
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 流程如
读取文件中的数据
requests 拿到数据请求接口返回状态码
通过断言验证返回状态码和 200 对比
生成 allure 的测试报告
 
 
模块总览
dataDemo( 存放数据 )>> readDemo( 读取数据 )
useRequests( 发送请求 )>>testDemo( 生成报告 )
python中requests接口测试_第4张图片
 
 
 
读取 csv 文件流程
 
存储数据 (csv)
 
 
python中requests接口测试_第5张图片
 
 
读取数据 (readDemo)
 
步骤:
python中requests接口测试_第6张图片
 
 
代码:
import csv
class ReadCsvClass():
    def readCsvMethd(self):
        item=[]  #定义列表存储数据
        rr = csv.reader(open("../dataBase/csv1111.csv"))
        for csv_i in rr:    #便利获取每行数据
            # print(csv)
            item.append(csv_i)
        return item[1:]

rcc=ReadCsvClass()
print(rcc.readCsvMethd())
request 请求接口返回状态码
 

步骤:

python中requests接口测试_第7张图片

代码:

from readDataDemo.readcsv import ReadCsvClass
ecc = ReadCsvClass()
lists = ecc.readCsvMethd()
import requests

class RequestCsvClass():
    def requestCsvMethod(self):
        item = []
        for csv_i in lists:
            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
rc=RequestCsvClass()
print(rc.requestCsvMethod())

pytest 断言设置并结合 allure 生成测试报告
 
步骤:
python中requests接口测试_第8张图片
 
代码:
import pytest,os
from readDataDemo.readcsv import ReadCsvClass
rc=ReadCsvClass()
ff=rc.readCsvMethd()
print(rc.readCsvMethd())
class TestClas():
    def test001(self):
        for c in ff:
            assert c==200

if __name__ == '__main__':
    # pytest.main(["testcsv.py"])
    pytest.main(['--alluredir', 'report/result', 'testcsv.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)
测试报告展示
 

python中requests接口测试_第9张图片

 

读取excle文件流程:

存储数据 (xlsx)
python中requests接口测试_第10张图片
 
python中requests接口测试_第11张图片
 
 
读取数据 (readDemo)
 
步骤:
python中requests接口测试_第12张图片
 
代码:
from openpyxl import load_workbook
class UseExcel():
    def get_TestExcel(self):  # 打开表
        workbook = load_workbook('D:\python_requests\dataBase/test111.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 = UseExcel()
# t.get_TestExcel()
f = t.get_TestExcel()
print(f)
request 请求接口返回状态码
 
步骤:
python中requests接口测试_第13张图片

代码:

from requestsDemo.readexcel import UseExcel
ue = UseExcel()
lists = ue.get_TestExcel()
import requests
class RequestsExcelClass():

    def requestsExcelMethod(self):
        item = []
        for excel_i in lists:
            if excel_i["method"] == "get":
                rr = requests.get(excel_i["url"], params=excel_i["parmas"])
                item.append(rr.status_code)
            else:
                rr = requests.post(excel_i["url"], data=excel_i["parmas"])
                item.append(rr.status_code)
        return item


if __name__ == '__main__':
    c=RequestsExcelClass().requestsExcelMethod()
    print(c)
 
pytest 断言设置并结合 allure 生成测试报告
 
步骤:
python中requests接口测试_第14张图片
 
代码:
import pytest, allure, os
from requestsDemo.requestsexcel import RequestsExcelClass
rc = RequestsExcelClass()
ff = rc.requestsExcelMethod()
class TestClas():
    def test001(self):
        for c in ff:
            assert c == 200


if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'testexcel.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)
测试报告展示 :
python中requests接口测试_第15张图片
 
 
 

你可能感兴趣的:(python,接口,request)