• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python中requests做接口测试的方法

    一、介绍

    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=guoneikey=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(生成报告)
    

    7.3 读取csv文件流程

    7.3.1 存储数据(csv)

    通过excel另存为csv即可。

    7.3.2 读取数据(readDemo)

    代码展示

    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请求接口返回状态码

    代码展示

    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生成测试报告

    代码展示

    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 测试报告展示

    7.4 读取excle文件流程

    7.4.1 存储数据(xlsx)

    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接口,继承,重载运算符详解
    • python编写接口测试文档(以豆瓣搜索为例)
    • Python3接口性能测试实例代码
    • 如何理解python接口自动化之logging日志模块
    • Python接口自动化之接口依赖
    上一篇:python关于集合的知识案例详解
    下一篇:如何利用pygame实现打飞机小游戏
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python中requests做接口测试的方法 Python,中,requests,做,接口,