requests接口测试

介绍

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

前提

pip install requests

Requests 响应
r.status_code 响应状态码
r.heards 响应头
r.cookies 响应 cookies
r.text 响应文本
r.json() 响应的字典类型数据
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)

testhtml里面将断言结果放在测试报告中展示

from testdemo.testcsv import TestCsvClass
from data.HTMLTestRunner import HTMLTestRunner
import unittest
class TestHtml():
    def testhtml(self):
        suite = unittest.TestSuite()
        ilte = ["test001"]
        for i  in ilte:
            suite.addTest(TestCsvClass(i))
        with open("../report.html", "wb") as f:
            HTMLTestRunner(
                stream=f,
                title="单元测试",
                description="测试一期",
                verbosity=2
            ).run(suite)
t = TestHtml()
t.testhtml()

读取csv文件

url,para,method,dy
http://apis.juhe.cn/mobile/get,"{""phone"": ""17613353768"", ""key"": ""67776b2f1ef19ff7a9956323de7dc044""}",get,0
http://apis.juhe.cn/mobile/get,"{""phone"": ""134"", ""key"": ""67776b2f1ef19ff7a9956323de7dc044""}",get,201102
http://apis.juhe.cn/mobile/get,"{""phone"": ""17613353768"", ""key"": ""67776b2f1ef19ff7a9956323de7d2134""}",get,10001

通过requests请求接口 进行断言

import requests,unittest
#导入unittest
class TestClass(unittest.TestCase):
    #全局变量
    csss=""
    def test001(self):
        # #参数转换为列表 get第一种方式
        # cs = '{"phone":"17613353768","key":"67776b2f1ef19ff7a9956323de7dc044"}'
        # para = eval(cs)
        # #字典方式存入数据 get里面存入路径
        # resultobject = requests.get(url="http://apis.juhe.cn/mobile/get",params=para)
        # #转换为json类型
        # print(resultobject.json())

        #get第二种方式进行传递
        resultobject = requests.get("http://apis.juhe.cn/mobile/get?phone=17613353768&dtype=&key=67776b2f1ef19ff7a9956323de7dc044")
        print(resultobject.json(),type(resultobject.json()))
        global csss
        csss = resultobject.json()["result"]["province"]

        # yq = resultobject.json()["result"]["province"]
        # print(yq)
        #对比 error_code和0进行对比
        # self.assertEqual(yq,0)
        # resultobject.url
        # print(resultobject.url)
        # #状态码
        # # resultobject.status_code
        # print(resultobject.status_code)
        # #文本展示
        # # resultobject.text
        # print(resultobject.text)
        # print(resultobject.text,type(resultobject.text))
    def test002(self):
        url = "http://apis.juhe.cn/simpleWeather/query"
        cs = '{"city":csss,"key":"b82cf7cb0b6c714dfb1223aa56862597"}'
        css = eval(cs)
        #使用post进行传参
        resultobject = requests.post(url=url,data=css)
        print(resultobject.json())
        # yq = resultobject.json()["error_code"]
        # self.assertEqual(yq,0)
#使用main方法进行调用
if __name__ == '__main__':
    unittest.main()

    {"phone": "17613353768", "key": "67776b2f1ef19ff7a9956323de7dc044"}

读取测试数据

import csv
class ReadCsv():
    def readcsv(self):
        itme = []
        obj = csv.reader(open("../data/1111.csv"))
        for i in obj:
            itme.append(i)
            #循环结束return列表
        # itme.pop(0)
        itme = itme[1::]
        return itme
if __name__ == '__main__':
    r = ReadCsv()
    print(r.readcsv())

 测试用例中发送请求 设置断言并生产测试报告

from readdata.readexcel import ReadExcel
#单元测试 自动化测试
import unittest,requests
#实例化
r = ReadExcel()
data = r.readexcel()
class TestExcelClass(unittest.TestCase):
    def test001(self):
        for i in data:
            # 转换成字典类型
            cs = eval(i["para"])
            if i["method"] == "get":
                resultobect = requests.get(url=i['a'],params=cs)
                # 实际结果
                sj = resultobect.json()["error_code"]
                #断言 和最后一个数据进行对比
                self.assertEqual(sj,int(i["dy"]))
            else:
                resultobect = requests.post(url=i["a"], data=cs)
                # 实际结果
                sj = resultobect.json()["error_code"]
                # 断言 和最后一个数据进行对比
                self.assertEqual(sj, int(i["dy"]))
if __name__ == '__main__':
    unittest.main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值