佛山营销网站建设,企业网站建设规划的基本原则,南京一对一网站建设,ip域名解析查询1.前言
Python内置的urllib模块#xff0c;也可以用于访问网络资源。但是#xff0c;它用起来比较麻烦#xff0c;而且#xff0c;缺少很多实用的高级功能。因此我们使用 requests 模块进行进行接口测试。
requests官方文档资料地址#xff1a;http://cn.python-request…1.前言
Python内置的urllib模块也可以用于访问网络资源。但是它用起来比较麻烦而且缺少很多实用的高级功能。因此我们使用 requests 模块进行进行接口测试。
requests官方文档资料地址http://cn.python-requests.org/zh_CN/latest/
2.环境安装
cmdwinR快捷键输入 pip install requests -i https://pypi.douban.com/simple
提示以下信息表示安装成功。 3.requests发送请求
3.1 get请求无参数param
将安装好的requests模块导入后通过GET访问一个URL地址的网页页面这里的 r 也就是 response请求后的返回值可以调用 response 里的 status_code 方法查看状态码状态码 200 只能说明接口请求发送成功了并不能说明功能一定是 OK 的一般要查看响应的内容r.text 返回文本信
# -*- coding:utf-8 -*-# 导入 requests 模块
import requests
# 定义 url
url http://www.cnblogs.com/wwho
# 请求博客园
r requests.get(urlurl)
# 打印状态码
print(r.status_code)
# 打印文本
print(r.text)3.2 get请求有参数param
url地址为http://apis.juhe.cn/simpleWeather/query?city深圳keyxxx 参数city深圳keyxxx
可以以字典的形式传参{city: 深圳, key: xxx}
多个参数格式 {key1: value1, key2: value2, key3: value3}
r.url获取当前url地址可以检查是否传参成功
代码
# -*- coding:utf-8 -*-# 导入 requests 模块
import requests# 定义 url
url http://apis.juhe.cn/simpleWeather/query
par {city: 深圳,key: 4611a7abae4afe573fd7ca751d9d423a}result requests.get(urlurl, paramspar)
# 打印文本
print(result.text)3.3定制请求头
一个完整的get请求应该包括请求行(url) 和请求头(headers)、请求参数(params) 什么时候要加请求头呢如果你不确定的话最好加上去。 3.4 response返回信息
response返回信息
-- r.status_code # 响应状态码-- r.content # 字节方式的响应体会自动为你解码 gzip 和deflate 压缩-- r.headers # 以字典对象存储服务器响应头但是这个字典比较特殊字典键不区分大小写若键不存在则返回 None-- r.json() # Requests 中内置的 JSON 解码器requests的方便之处还在于对于特定类型的响应例如JSON可以直接获取-- r.url # 获取 url-- r.encoding # 编码格式requests自动检测编码-- r.cookies # 获取 cookie-- r.raw # 返回原始响应体-- r.text #字符串方式的响应体会自动根据响应头部的字符编码进行解码-- r.raise_for_status() # 失败请求(非 200 响应)抛出异常以上就是requests模块主要的返回格式。
3.5 post请求
讲post请求之前 先讲一下 requests.session() requests.session() 获取 requests的session对象简单来说就相当于一个微型浏览器能自动保持登录态。所以一般对于 cookie – session 保持登录态的系统就可以使用 requests.session()
使用方法后续的请求都使用session即可 Post请求首先要注意的就是body的数据类型
常见的有四种类型但是不止四种
第一种application/json {“key1“:”value1”,“keyt2:“value2}第二种application/x-www-form-urlencodedname1 value1name2value2第三种multipart/form-data:这一种是表单格式的 文件上传图片上传等混合式第四种text/xml
examples.getStateName
Body为x-www-form-urlencoded类型
怎么知道body是什么类型
接口文档有说明自己抓包看
直接通过抓包就可以看出post请求的数据类型如下图就是x-www-form-urlencoded类型 传data参数就行无需转json 代码
# -*- coding:utf-8 -*-
# File:sms.py
import requests
host http://127.0.0.1:8002
session requests.session() # 相当于微型浏览器保持登录态
url host /api/mgr/signin # 定义url
body {username: byhy,password: 88888888
}
resp session.post(urlurl, databody)status_coderesp.status_code #获取响应状态码
print(响应状态码:{}.format(status_code))textresp.text # 获取响应内容结果类型是字符串
print(响应内容:{}.format(text))jsonresp.json() # 获取响应内容结果是字典类型
print(响应内容:{}.format(json))resp_headersresp.headers # 获取响应headers
print(响应header:{}.format(resp_headers))Body为json类型 jsonbody: 这个表示自动将python里面的字典转化为json格式参数了。关于字典和json的种种关系后面专门写篇文章讲一下。 代码 # -*- coding:utf-8 -*-
import requests
host http://127.0.0.1:8002
session requests.session() # 相当于微型浏览器保持登录态
url host /api/mgr/signin # 定义登录的 url
body {username: byhy,password: 88888888
}resp session.post(urlurl, databody) # 发送登录请求url_add_customer host /api/mgr/customers # 新建客户的 url
body {action:add_customer,data:{name:tester,phonenumber:13345679934,address:深圳市南山区}
}
resp session.post(urlurl_add_customer, jsonbody)
print(resp.text) # 打印响应文本3.6 put请求
put 请求的接口做法跟 post请求的差不多的只是把post 请求改为 put请求。一样要看请求的格式。如果是 json 格式也是用json接Form格式用data接。
代码
# -*- coding:utf-8 -*-
# Time:2021/4/16 9:54
# File:sms.py
import requests
host http://127.0.0.1:8002
session requests.session() # 相当于微型浏览器保持登录态
url host /api/mgr/signin # 定义登录的 url
body {username: byhy,password: 88888888
}
resp session.post(urlurl, databody)url_modify_customer host /api/mgr/customers # 修改客户的 url
body {action:modify_customer,id: 52,newdata:{name:深圳市桥北医院,phonenumber:13345678888,address:深圳市中医院}
}
resp session.put(urlurl_modify_customer, jsonbody)
print(resp.text) # 打印修改客户接口响应的文本3.7 delete请求
delete 请求的接口做法跟 post请求的差不多的只是把post 请求改为 delete请求。一样要看请求的格式。如果是 json 格式也是用json接Form格式用data接。 代码
# -*- coding:utf-8 -*-
# Time:2021/4/16 9:54
# File:sms.py
import requests
host http://127.0.0.1:8002
session requests.session() # 相当于微型浏览器保持登录态
url host /api/mgr/signin # 定义登录的 url
body {username: byhy,password: 88888888
}
resp session.post(urlurl, databody)url_delete_customer host /api/mgr/customers # 删除客户的 url
body {action:del_customer,id: 52
}
resp session.delete(urlurl_delete_customer, jsonbody)
print(resp.text) # 打印删除客户接口响应的文本总结
requests库的请求方法里参数众多所以简单总结一下 get请求带参数就用paramsparamspost请求是form格式就用datadatapost请求是json类型参数就用jsonjson请求头信息header就用headersheaders 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你