接口测试基础+requests库
接口测试基础+requests库
- 接口测试基础
- URL格式
- 协议
- IP地址
- 端⼝号
- 资源路径
- 查询参数
- 练习
- HTTP请求
- 请求行
- 请求头
- 请求体
- 浏览者开发工具
- Requests库
- Requests库安装和简介
- 设置http请求语法
- 应用案例
- py02_tpshop_search.py
- py03_tpshop_login.py
- py04_ihrm_login.py
接口测试基础
URL格式
协议
http、https。 作⽤:指定数据传输规则
IP地址
也就是域名。 作⽤在⽹络环境中,唯⼀定位 ⼀台主机
端⼝号
作⽤:在主机上,唯⼀定义个应⽤程序。
可以省略。如果省略,跟随协议。 http - 80 。Https - 443
资源路径
作⽤:应⽤对应的数据资源。
可以省略。如果省略,资源路径为 “/”
查询参数
作⽤:给资源传递参数
可以省略。如果省略,没有 ?分割符。
可以有多组。每组 k=v 格式。各组之间 ⽤ “&” 隔分。
练习
请写出以下URL的各个组成部分。这个URL没有写出端⼝号,它的端⼝是什么?
http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login
HTTP请求
⼀定产⽣于 客户端。当 客户端给服务器发送请求时,使⽤该协议。(请求报⽂、请求包)
//请求行
POST http://demo.zentao.net/user-login.html HTTP/1.1
//请求头
Host: demo.zentao.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive
Upgrade-Insecure-Requests: 1
//请求体
account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
请求行
- LGET:查询 —— 没有请求体
- POST:添加 (注册、登录)
- DELETE:删除 —— 没有请求体
- PUT:修改
请求头
- 位于请求⾏之下,空⾏之上的部分。 数据组织格式 ⼀定是 k:v 对
- Content-Type : 作⽤,指定请求体的数据类型
application/json:请求体数据类型为json
application/x-www-form-urlencoded:请求体的数据类型 为 表单类型
请求体
- 位于空⾏之下
- 有的请求协议 是没有请求体。如:get、delete
- 请求体的数据类型,受请求头中 Content-Type 的值影响
浏览者开发工具
- 抓包获取 ihrm系统的登录接⼝ 和 tpshop登录接⼝,解析请求数据
Requests库
Requests库安装和简介
Requests库 是 Python编写的,基于urllib 的 HTTP库,使用方便
设置http请求语法
resp = requests.请求方法(url='URL地址', params={k:v}, headers={k:v},
data={k:v}, json={k:v}, cookies='cookie数据'(如:令牌))
请求方法:
get请求 - get()
post请求 - post()
put请求 - put()
delete请求 - delete()
url: 待请求的url - string类型
params:查询参数 - 字典
headers:请求头 - 字典
data:表单格式的 请求体 - 字典
json:json格式的 请求体 - 字典
cookies:cookie数据 - string类型
resp:响应结果
- 入门案例:使用Requests库访问 百度 http://www.baidu.com
import requests
resp = requests.get(url='http://www.baidu.com')
print(resp.text)
应用案例
py02_tpshop_search.py
【带查询参数 的get请求】使用Requests库,请求 tpshop商城 搜索商品接口。查询 iphone
链接: https://demo6.tp-shop.cn/Home/User/login.html
import requests
# 发送 get 请求,指定 url,获取 响应结果
# 方法1:
resp = requests.get(url="https://demo6.tp-shop.cn/Home/Goods/search.html?q=iPhone")
# 方法2:
# resp = requests.get(url="https://demo6.tp-shop.cn/Home/Goods/search.html",
# params={"q": "iPhone"})
# 查询响应结果
print(resp.text)
py03_tpshop_login.py
【带 表单数据 的post请求】使用Requests库,完成 tpshop商城 登录接口调用。返回 ”验证码错误“ 即可。
import requests
# 发送 post 请求,指定url、请求头、请求体, 获取响应结果
resp = requests.post(url="https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login&t=0.06467934447015278",
# headers={"Content-Type": "application/x-www-form-urlencoded"},
data={"username": "13012345678", "password": "1234567", "verify_code": "JNTD"})
# 打印响应结果 - 文本
print(resp.text)
# 打印响应结果 - json
print(resp.json())
py04_ihrm_login.py
【带 json数据 的post请求】使用Requests库,完成 iHRM系统 成功登录。返回 ”令牌数据“。
import requests
# 发送 post 登录请求,指定 url、请求头、请求体,获取响应结果
resp = requests.post(url="https://ihrm-java.itheima.net/api/sys/login",
# headers={"Content-Type": "application/json"},
json={"mobile": "13800000002", "password": "123456"})
# 打印响应结果
print(resp.json())