介绍
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()