1:介绍

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

2:前提

pip install requests

3:get的请求以及post

#导入requests包
import  requests,unittest
class TestClass(unittest.TestCase):csss=''#get请求获取数据def test001(self):#get方式# cs= '{"phone":"13488602526","key":"0aac8316e9b8f142c1e560d8f9a17ff9"}'# #eval将字符串str当成有效的表达式来求值并返回计算结果。# para=eval(cs)# resultobject=requests.get(url="http://apis.juhe.cn/mobile/get",params=para)# print(resultobject.json())# get第二种方式resultobject=requests.get("http://apis.juhe.cn/mobile/get?phone=13426&dtype=&key=0aac8316e9b8f142c1e560d8f9a17ff9")print(resultobject.json())global csss#返回结果转为字典csss=resultobject.json()["result"]["province"]# self.assertEqual(yq,0)#路径# print(resultobject.url)#状态码# print(resultobject.status_code)#文本信息# print(resultobject.text)#post请求def test002(self):url = "http://apis.juhe.cn/simpleWeather/query"cs = '{"city":csss,"key":"b0dc62ef515acbb69fceb5f4b78e2574"}'css=eval(cs)resultobject=requests.post(url=url,data=css)print(resultobject.json())# yq = resultobject.json()["error_code"]# self.assertEqual(yq, 0)
if __name__ == '__main__':unittest.main()

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)

requests+unittest+HtmlTestRunner/requests+pytes t+allure

流程

读取文件中的数据
requests拿到数据请求接口返回状态码
通过断言验证返回的数据和预期结果
生成allure的测试报告allure生成测试报告
import  pytest,requests,allure,os
from  readdata.readcsv import ReadCsv
r=ReadCsv()
data=r.readcsv()
class TestCsvClass1():def test001(self):for i in data:cs=eval(i[1])if i[2]=="get":resultobject=requests.get(url=i[0],params=cs)sj=resultobject.json()["error_code"]assert sj==int(i[3])else:resultobject = requests.post(url=i[0], data=cs)sj = resultobject.json()["error_code"]assert sj == int(i[3])
if __name__ == '__main__':# pytest.main(["testcsvpytest.py","--html=./report1.html"])# 生成测试报告jsonpytest.main(["-s", "-q", '--alluredir', 'report/result', 'testcsvallure.py'])# 将测试报告转为html格式split = 'allure ' + 'generate ' + './report/result ' + '-o ' +'./report2/html ' + '--clean'# os.system('cd D:\install\python/python\Test_allure\Test/test\report')os.system(split)

pytest生成测试报告

import  pytest,requests
from  readdata.readcsv import ReadCsv
r=ReadCsv()
data=r.readcsv()
class TestCsvClass1():def test001(self):for i in data:cs=eval(i[1])if i[2]=="get":resultobject=requests.get(url=i[0],params=cs)sj=resultobject.json()["error_code"]assert sj==int(i[3])else:resultobject = requests.post(url=i[0], data=cs)sj = resultobject.json()["error_code"]assert sj == int(i[3])
if __name__ == '__main__':#生成测试报告pytestpytest.main(["testcsvpytest.py","--html=./report1.html"])

untitest

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))#生成测试报告unitestwith open("../report.html", "wb") as f:HTMLTestRunner(stream=f,title="接口自动化测试",description="测试一期",verbosity=2).run(suite)
t=TestHtml()
t.testhtml()

Csv数据:

url,parameter,method,dy
http://apis.juhe.cn/mobile/get,"{""phone"":""18080006200"",""key"":""55e06fffb2e55514b2742dbcebb5cb4f""}",get,0
http://apis.juhe.cn/mobile/get,"{""phone"":""180800"",""key"":""55e06fffb2e55514b2742dbcebb5cb4f""}",get,201102
http://apis.juhe.cn/mobile/get,"{""phone"":""18080006200"",""key"":""55e06fffb2e55514b2742dbcb4f""}",get,10001
http://apis.juhe.cn/mobile/get,"{""phone"":""18080006200"",""key"":""55e06fffb2e55514b2742dbcebb5cb4f""}",post,0

excel数据:

读取csv数据代码

#导入csv的包
import  csv
class  ReadCsv():def readcsv(self):#创建一个空列表接受数据item=[]obj=csv.reader(open("../data/1111.csv"))for i in obj:#将每次读取玩的数据添加到列表里item.append(i)item=item[1::]return itemreturn item
if __name__ == '__main__':r=ReadCsv()print(r.readcsv())

读取excel数据:

from openpyxl import load_workbook
class ReadExcel():def readexcel(self):#打开表workbook=load_workbook("../data/1111.xlsx")sheet=workbook["Sheet1"]#行数print(sheet.max_row)#列数print(sheet.max_column)#把所有行的数据放到列表中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).valuetest_data.append(sub_data)return  test_data
if __name__ == '__main__':r=ReadExcel()print(r.readexcel())

excel测试用例

#读取excel
from  readdata.readexcel import ReadExcel
import unittest,requests
r=ReadExcel()
data=r.readexcel()
class   TextExcelClass(unittest.TestCase):def test001(self):for i in data:cs = eval(i["parameter"])if i["method"]=="get":resultobject=requests.get(url=i["a"],params=cs)sj=resultobject.json()["error_code"]self.assertEqual(sj,int(i["dy"]))else:resultobject = requests.post(url=i["a"], data=cs)sj = resultobject.json()["error_code"]self.assertEqual(sj, int(i["dy"]))if __name__ == '__main__':unittest.main()

Python学习之requests接口测试相关推荐

  1. Python学习笔记:requests库

    Python学习笔记:requests库 利用requests这个功能强大的网络请求库,可以像浏览器一样发送各种HTTP请求来获取网站的数据. 一.运行环境 1.系统版本:Windows 10 2.P ...

  2. 小猪的Python学习之旅 —— 10.三分钟上手Requests库

    小猪的Python学习之旅 -- 10.三分钟上手Requests库 标签:Python 一句话概括本文: 本节讲解Requests库的常见使用,以及一个实战项目: 扒取某一篇微信文章里所有的图片,视 ...

  3. Python学习笔记 day5

    Python学习笔记 day5 参考/引用资料: 1.file a.打开文件方式(读写两种方式) 缓冲 with语句 b.文件对象的操作方法 c.学习对excel及csv文件进行操作 读写excel ...

  4. Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段

    大家好,我是梦雅. \ 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. \ \ \ 阶段一:Python基础[ 初入江湖] \ Li ...

  5. Python学习六大路线,教你快速上手

    最近几年随着互联网的发展学习Python人越来越多,Python的初学者总希望能够得到一份Python学习路线图,小编经过多方面汇总,总结出比较全套Python学习路线,快速上手.对于一个零基础的想学 ...

  6. 自学python推荐书籍同时找哪些来实践-Python学习路上有这些论坛、网站、书籍与你同行...

    Python学习路上有这些论坛.网站.书籍与你同行 2019-05-03 18:24:41 613点赞 9508收藏 164评论 创作立场声明:希望我的一些经验可以给你少走一些弯路,但人总得走点弯路才 ...

  7. 学python有哪些书推荐-有什么Python学习的书籍和学习资源推荐?

    看到这个题目已经有一段时间,今天晚上和两位同事吃饭时我问起这个问题,"你们学习Python过程中看过什么不错的书籍?"两位同事的回答都是"没看书,就是在网上找了一些教程简 ...

  8. python教程书籍-有什么Python学习的书籍和学习资源推荐?

    看到这个题目已经有一段时间,今天晚上和两位同事吃饭时我问起这个问题,"你们学习Python过程中看过什么不错的书籍?"两位同事的回答都是"没看书,就是在网上找了一些教程简 ...

  9. python爬虫原理-python学习之python爬虫原理

    原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...

最新文章

  1. 一个最简单的 Github workflow 例子
  2. 【python】编程学习练习题-2
  3. 5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴...
  4. idea可以正常启动无法进入断点_IDEA Debug 无法进入断点的解决方法
  5. python有哪些用途-python的主要用途是什么
  6. 深入理解JVM之JVM内存区域与内存分配
  7. linux高亮 查日志
  8. Ubuntu21.04 安装 VLC视频播放器
  9. 努力就一定会成功,这或许是一个问题?
  10. Java中关于二叉树详解
  11. MySQL 8.0.17的安装与图形管理软件介绍
  12. jupyter notebook插件安装
  13. mac bookpro m1 笔记本关闭键盘屏幕 禁用键盘屏幕使用 键盘屏幕误触 Touch Bar禁用 禁用MacBook-Pro的触摸栏
  14. 如何做好中小企业中层管理者
  15. python-不换行输出+print()完整参数详解
  16. 前端开发中的脚手架是什么意思
  17. 【算法题】2309. 兼具大小写的最好英文字母
  18. cad打印老显示rpc服务器不可用,win7打印机提示rpc服务器不可用怎么办-解决win7打印机提示rpc服务器不可用的方法 - 河东软件园...
  19. 执行shell脚本进入指定目录
  20. 小学教师计算机应用操作培训总结,小学教师培训总结

热门文章

  1. 用计算机弹吃鸡,Win10系统玩吃鸡游戏弹出提示“out of memory”的解决方法
  2. 知识图谱的应用(一)-搜索与推荐
  3. 浏览器预览pdf去除顶部工具栏
  4. Java生成ZIP压缩包
  5. MP4视频转m3u8格式
  6. android中蓝牙的使用方法,Android蓝牙开发教程(一)
  7. 计算机试讲教案模板范文,20分钟试讲教案模板
  8. Java编程那些事儿104——网络编程技术3
  9. 解决androidl连接mysql闪退的问题
  10. Ubuntu18.04登录输密码时出现“抱歉,登录失败,请再试一次”解决方法