当前位置: 首页 > news >正文

requests库的常用方法

        之前都是用jmeter进行接口测试然后进行持续性集成,之前也写过用jmeter来请求各种类型的接口,今天来学习下如何使用python+requests对各种接口发起请求并断言。

1.接口类型

        测试项目的ip和端口如下:

host = "ip"
port = "8080"

1.1.get类型接口请求

    def test_get_params(self):"""请求方式为get"""url = "http://" + self.host + ":" + self.port + "/pinter/com/getSku"# 请求参数params = {"id": 1}#发起请求res = requests.get(url=url, params=params)print(res.text)assert res.status_code == 200

1.2.post类型接口请求,参数为params

    def test_post_params(self):"""请求方式为post,请求参数为params"""url = "http://" + self.host + ":" + self.port + "/pinter/com/login"# 请求参数params = {"userName": "admin", "password": "1234"}res = requests.post(url=url, params=params)print(res.text)assert res.status_code == 200

1.3.post类型接口请求,参数为json

    def test_post_json(self):"""请求方式为post,请求参数为json:return:"""url = "http://" + self.host + ":" + self.port + "/pinter/com/register"json = {"userName": "test", "password": "1234", "gender": 1, "phoneNum": "110", "email": "beihe@163.com","address": "Beijing"}res = requests.post(url=url, json=json)print(res.text)assert res.status_code == 200

1.4.post类型接口请求,参数为k=json

    def test_post_params_json(self):"""请求方式为post,请求参数为k=json:return:"""url = "http://" + self.host + ":" + self.port + "/pinter/com/buy"params = {"param": '{"skuId":123,"num":10}'}res = requests.post(url=url, params=params)print(res.text)assert res.status_code == 200

2.上传

    def test_upload(self):url = "http://" + self.host + ":" + self.port + "/pinter/file/api/upload"files={'file':open(file=r'C:\Users\29442\Desktop\user.txt',mode='rb')}#发起接口调佣res=requests.post(url=url,files=files)print(res.text)

3.获取token

        部分接口依赖登录接口中的token,可以将登录接口中的token提取出来,用global定义为全局变量,然后在其它接口的header中进行调用,如下图所示。

    def test_login_token(self):"""测试登录,带token"""url = "http://" + self.host + ":" + self.port + "/pinter/bank/api/login2"params = {"userName":"admin","password":"1234"}res = requests.post(url=url, params=params)text=json.loads(res.text)print(text)global tokentoken=text.get("data")assert res.status_code == 200def test_token(self):"""查询余额,带token"""headers={"testfan-token":token}url = "http://" + self.host + ":" + self.port + "/pinter/bank/api/query2"params = {"userName":"admin"}res = requests.get(url=url, params=params,headers=headers)print(res.text)assert res.status_code == 200

4.自动获取cookie

        部分接口依赖登录接口的cookie,在代码中如果我们使用固定的cookie,cookie失效之后又需要人为手动填充很不方便,requests给我们提供了一种方法可以自动获取cookie,可以用session获取到cookie之后再用session调用方法发起请求,如下图所示。

    #通过session自动获取cookiesession = requests.session()def test_login_cookie(self):"""测试登录,带Cookie"""url = "http://" + self.host + ":" + self.port + "/pinter/bank/api/login"params = {"userName":"admin","password":"1234"}res = self.session.post(url=url, params=params)print(res.text)assert res.status_code == 200def test_cookie(self):"""查询余额,带Cookie"""url = "http://" + self.host + ":" + self.port + "/pinter/bank/api/query"params = {"userName":"admin"}res = self.session.get(url=url, params=params)print(res.text)assert res.status_code == 200

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构--第七章--树和二叉树
  • 调研管理系统的设计
  • odoo15升级odoo16遇到的问题及解决过程
  • 关于fedora中的wheel组
  • spring boot使用自定义注解做AOP
  • 短剧系统开发步骤需求设计方案逻辑
  • mosquitto工具使用
  • 如何提高逻辑性?(小妙招)
  • 【Java面试】十六、并发篇:线程基础
  • 企业微信hook接口协议,ipad协议http,取消扫码返回
  • EXCEL从图片链接获取图片
  • 分布式光纤测温DTS与红外热成像系统的主要区别是什么?
  • C++多线程并发
  • kettle_Hbase
  • 通过ssr-echarts,服务端生成echarts图
  • Google 是如何开发 Web 框架的
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • CEF与代理
  • CSS实用技巧
  • eclipse(luna)创建web工程
  • FineReport中如何实现自动滚屏效果
  • java 多线程基础, 我觉得还是有必要看看的
  • jquery cookie
  • JSONP原理
  • Laravel 菜鸟晋级之路
  • node 版本过低
  • vue 配置sass、scss全局变量
  • Web Storage相关
  • Webpack 4x 之路 ( 四 )
  • Web设计流程优化:网页效果图设计新思路
  • 解析带emoji和链接的聊天系统消息
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 如何用vue打造一个移动端音乐播放器
  • 使用 QuickBI 搭建酷炫可视化分析
  • 线性表及其算法(java实现)
  • 小程序开发中的那些坑
  • 《天龙八部3D》Unity技术方案揭秘
  • 回归生活:清理微信公众号
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • ​字​节​一​面​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ######## golang各章节终篇索引 ########
  • $(selector).each()和$.each()的区别
  • (10)STL算法之搜索(二) 二分查找
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (PADS学习)第二章:原理图绘制 第一部分
  • (web自动化测试+python)1
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (纯JS)图片裁剪
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot学生选课系统 毕业设计 612555