企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Python进行接口测试 python 做接口测试 用到模块 requests 安装模块`python -m pip install requests` 1. 由于pip命令可能安装失败所以有时我们要通过下载第三方库文件来进行安装。 2. 在github上的地址为:**`https://github.com/requests/requests`** 3. 下载文件到本地之后,解压到python安装目录。 4. 然后在dos界面cd到该目录,在此处运行命令行并输入:**`python setup.py install`**即可。 > ### requests发送请求 | 方法 | 解释 | | --- | --- | | requests.get() | 获取html的主要方法 | | requests.post() | 向html网页提交post请求的方法 | | requests.delete() | 向html提交删除请求 | | requests.put() | 向html网页提交put请求的方法 | | requests.head() | 获取html头部信息的主要方法 | | requests.patch() | 向html提交局部修改的请求 | * 发送请求示例 ~~~ import requests r = requests.get(url)#发送get请求 r = requests.post(url)#发送post请求 # 其余请求的发送方式一样,故不再演示 ~~~ 在发送请求时,除了url之外,还有许多参数,一一来看 * **`url`** url,请求的路径,表示这个请求发送到哪里去 ~~~ import requests myurl = 'http://brtc.imsam.cn' r = requests.get(url=myurl) ~~~ * **`params`** 跟url一起发送的参数(以字典方式传递),通常使用在**get**请求中 ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} r = requests.get(url=myurl,params=kv) ~~~ * **`data`** 字典,与params不同的是,data提交的数据并不放在url链接里,通常在**post**请求中使用 ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} r = requests.post(url=myurl,data=kv) ~~~ * **`json`** 以json的方式发送请求数据,通常也用在**post**请求中 ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} r = requests.post(url=myurl,json=kv) ~~~ * **`headers`** 定制请求的头部信息 ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} hd ={"User-Agent":" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"} r = requests.get(url=myurl,params=kv,headers=hd) ~~~ * **`files`** 发送带文件的请求 ~~~ import requests myurl = 'http://brtc.imsam.cn' upfile = {'file': open('文件路径', 'rb')} r = requests.post(url=myurl,files=upfile) ~~~ * **`timeout`** 设置超时时间 ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} r = requests.post(url=myurl,data=kv,timeout=0.01) ~~~ * **`proxies`** 设置访问代理 ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} proxy = {"http": "http://10.10.1.10:3128","https": "https://10.10.1.100:4444"} r = requests.post(url=myurl,data=kv,proxies=proxy) ~~~ 如果代理需要用户名和密码,则需要这样: ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} proxy = {"http": "http://用户名:密码@10.10.1.10:3128","https": "https://用户名:密码10.10.1.100:4444"} r = requests.post(url=myurl,data=kv,proxies=proxy) ~~~ * **`自动带上cookie`** ~~~ s = requests.Session() r = s.get('url') ~~~ > ### 响应内容 ~~~ import requests myurl = 'http://brtc.imsam.cn' kv = {'username':'张三','age':'18'} r = requests.post(url=myurl,data=kv) r.text# 以字符串方式返回响应内容 # 更多响应内容如下 ~~~ | 响应 | 含义 | | --- | --- | | r.encoding | #获取当前的编码 | | r.encoding = 'utf-8' | #设置编码 | | r.text | #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。 | | r.content | #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。 | | r.headers | #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None | | r.status\_code | #响应状态码 | | r.json() | #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常 | | r.raise\_for\_status() | #失败请求(非200响应)抛出异常 |