热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python接口测试_python+requests接口测试

python也可以进行接口测试,并且比工具更加灵活多变,借助第三方库requests,下载方式:cmd终端输入pipinst

python也可以进行接口测试,并且比工具更加灵活多变,借助第三方库requests,下载方式:cmd终端输入 pip install requests

接口请求方式存在多种,get,post,put,delete等,目前企业中用的最多的为get及post请求,我们这里也主要介绍如何使用python+requests进行post和get请求:

Get请求

import requestsapiurl="http://39.107.96.138:3000/api/v1/topics"'''请求接口'''输入参数resonse=requests.get(url=apiurl)print(resonse.status_code)# response.content ---响应值(数据流类型)# response.text ---响应值(字符串类型)# response.json() ---响应值(字典类型,只能是接口才能这个方法)# print(respone.content)#response1.elapsed.total_seconds() ----获取接口耗

以上可以看到一个简单的get请求,并未传入任何参数及请求头信息,以及列举了一些获取响应信息的代码。如果我们的接口需要传入参数以及请求头信息该怎么办:

resonse=requests.get(url=apiurl,params={"page":2,"limit":3},header={'Content-Type':'application/json'})

我们直接在请求后面的括号中进行参数的传递即可,具体详情可参考requests的文档介绍。

对于返回的数据,我们可以对其进行格式的变化,以便于我们进行使用及提取相关信息:

#json与字符串与字典的转换import json#字符串转换成字典类型dict1=json.loads(string1)#字典类型转换成json字符串(python无json数据类型,实际为str类型)json1=json.dumps(dict1)

Post请求

res=requests.post('http://39.107.96.138:3000/api/v1/topics',                  json={"accesstoken":"dhsfdretret","title":"心仪的小姐姐和别人跑了","tab":"share","content":"真的好难受啊"})print(res.status_code)if res.status_code == 200: print("新建成功")else: print("失败")

实际我们看到只是请求方式进行了改变,一级传参的关键字变了一下,post中传参可以使用data=,也可以使用json=,具体情况具体使用,json=多只参数以json字符串格式进行传递,data=多用来进行字典格式传递,具体格式变换也可以使用json.loads()等方法进行变换,对返回来的数据进行判断断言,以确保我们用例的执行成功与否。

COOKIEs设置

我们都知道有些接口是需要COOKIE进行传递才可进行请求,那么我们不能每请求一次都需要进行收到获取页面的COOKIE,那么我们如何进行COOKIE的设置呢:------>>>requests.session()

sessions = requests.session()res=sessions.post('http://39.107.96.138:3000/api/v1/topics', json={"accesstoken":"dhsfdretret","title":"心仪的小姐姐和别人跑了","tab":"share","content":"真的好难受啊"})print(res.status_code)

以上我们可以看到直接设置sessions,然后进行登录接口请求,里面的COOKIE会自动set到sessions中,后续直接使用sessions请求即可。

若无登录接口返回COOKIE,公司有自动的获取COOKIE接口,可以使用COOKIE自带的RequestsCOOKIEJar()方法set值:

sessions = requests.session()c = requests.COOKIEs.RequestsCOOKIEJar()c.set('COOKIE_key1','COOKIE_value1')   # set获取的COOKIE值c.set('COOKIE_key2','COOKIE_key2') # # set获取的COOKIE值sessions.COOKIEs.update(c) # 更新sessionsres=sessions.post('http://39.107.96.138:3000/api/v1/topics', json={"accesstoken":"dhsfdretret","title":"心仪的小姐姐和别人跑了","tab":"share","content":"真的好难受啊"})print(res.status_code)

接口常见问题:

1,若接口存在重定向,如何查看重定向前的请求信息(requests自动处理重定向)?

response.history #list类型for i in response.history: print(i.url) print(i.status_code) print(i.heasers["Location"]) 获取定向的地址 如何设置接口重定向不处理?response = requests.get(url,allow_redirects=False) #allow_redirects参数设置

2,url中带有中文编码转换?(requests请求时自动转换)

from urllib.parse import quote,unquotea = '零基础Python自动化'b = quote(a) #编码c = unquote(b) #解码

2671a2d620110bcaf7c26e7453f59471.png




推荐阅读
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
author-avatar
LMS柳树_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有