接口测试之requests
requests
使用 pip 命令安装 requests库
法1:
使用快捷键win+R输入命令 cmd 打开电脑黑屏终端,在黑屏终端输入命令
pip install requests
法2:
在pycharm中打开终端,输入命令 pip install requests
request 请求
相关测试数据网址 https://www.juhe.cn/
API文档中有相关参数说明和json示例
请求的时候,需要将AppKey带上
get请求
# 导包
import requests
# 给接口地址定义变量名称
url = "http://v.juhe.cn/weather/index"
para = {"cityname":"北京","key":"221ec2c9d854d2859310ea808cb760fd"}
# 发送请求
r = requests.get(url,params=para)
# 查看请求状态(状态码)
print(r.status_code)
# 获取json数据
print(r.json())
res = r.json()
# 获取json数据里的某个值 key-value形式
print(res["reason"])
输出结果
200
{'resultcode': '200', 'reason': '查询成功', 'result': {'sk': {'temp': '10', 'wind_direction': '北风', 'wind_strength': '2级', 'humidity': '90%', 'time': '22:46'}, 'today': {'temperature': '7℃~14℃', 'weather': '多云转中雨', 'weather_id': {'fa': '01', 'fb': '08'}, 'wind': '西北风4-5级', 'week': '星期六', 'city': '北京', 'date_y': '2019年11月09日', 'dressing_index': '较冷', 'dressing_advice': '建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。', 'uv_index': '最弱', 'comfort_index': '', 'wash_index': '不宜', 'travel_index': '较适宜', 'exercise_index': '较适宜', 'drying_index': ''}, 'future': {'day_20191109': {'temperature': '7℃~14℃', 'weather': '多云转中雨', 'weather_id': {'fa': '01', 'fb': '08'}, 'wind': '西北风4-5级', 'week': '星期六', 'date': '20191109'}, 'day_20191110': {'temperature': '6℃~17℃', 'weather': '多云转晴', 'weather_id': {'fa': '01', 'fb': '00'}, 'wind': '持续无风向微风', 'week': '星期日', 'date': '20191110'}, 'day_20191111': {'temperature': '4℃~16℃', 'weather': '晴转多云', 'weather_id': {'fa': '00', 'fb': '01'}, 'wind': '北风微风', 'week': '星期一', 'date': '20191111'}, 'day_20191112': {'temperature': '4℃~15℃', 'weather': '多云', 'weather_id': {'fa': '01', 'fb': '01'}, 'wind': '西北风3-5级', 'week': '星期二', 'date': '20191112'}, 'day_20191113': {'temperature': '-4℃~6℃', 'weather': '晴', 'weather_id': {'fa': '00', 'fb': '00'}, 'wind': '北风微风', 'week': '星期三', 'date': '20191113'}, 'day_20191114': {'temperature': '4℃~15℃', 'weather': '多云', 'weather_id': {'fa': '01', 'fb': '01'}, 'wind': '西北风3-5级', 'week': '星期四', 'date': '20191114'}, 'day_20191115': {'temperature': '4℃~16℃', 'weather': '晴转多云', 'weather_id': {'fa': '00', 'fb': '01'}, 'wind': '北风微风', 'week': '星期五', 'date': '20191115'}}}, 'error_code': 0}
查询成功
错误请求
譬如输入错误的APPKey
# 导包
import requests
# 给接口地址定义变量名称
url = "http://v.juhe.cn/weather/index"
para = {"cityname":"北京","key":"221ec2c9d854d20ea808cb760f"}
r = requests.get(url,params=para)
res = r.json()
print(res)
print(res["error_code"])
输入结果
{'resultcode': '101', 'reason': '错误的请求KEY', 'result': None, 'error_code': 10001}
10001
post请求
import requests
url ="http://v.juhe.cn/weather/geo"
para = {"lon":"116.39277","lat":"39.933748","key":"221ec2c9d854d2859310ea808cb760fd"}
# 发送post请求
r = requests.post(url,data=para)
# 获取json数据
res = r.json()
print(res)
print(res["reason"])
print(res["error_code"])
输入结果
{'resultcode': '200', 'reason': 'successed!', 'result': {'sk': {'temp': '16', 'wind_direction': '西北风', 'wind_strength': '3级', 'humidity': '27%', 'time': '16:04'}, 'today': {'temperature': '5℃~17℃', 'weather': '多云转晴', 'weather_id': {'fa': '01', 'fb': '00'}, 'wind': '西北风4-5级', 'week': '星期日', 'city': '北京', 'date_y': '2019年11月10日', 'dressing_index': '较冷', 'dressing_advice': '建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。', 'uv_index': '弱', 'comfort_index': '', 'wash_index': '不宜', 'travel_index': '较不宜', 'exercise_index': '较不宜', 'drying_index': ''}, 'future': {'day_20191110': {'temperature': '5℃~17℃', 'weather': '多云转晴', 'weather_id': {'fa': '01', 'fb': '00'}, 'wind': '西北风4-5级', 'week': '星期日', 'date': '20191110'}, 'day_20191111': {'temperature': '4℃~16℃', 'weather': '晴转多云', 'weather_id': {'fa': '00', 'fb': '01'}, 'wind': '北风微风', 'week': '星期一', 'date': '20191111'}, 'day_20191112': {'temperature': '6℃~16℃', 'weather': '多云', 'weather_id': {'fa': '01', 'fb': '01'}, 'wind': '北风微风', 'week': '星期二', 'date': '20191112'}, 'day_20191113': {'temperature': '-4℃~8℃', 'weather': '晴', 'weather_id': {'fa': '00', 'fb': '00'}, 'wind': '西北风4-5级', 'week': '星期三', 'date': '20191113'}, 'day_20191114': {'temperature': '-3℃~7℃', 'weather': '晴', 'weather_id': {'fa': '00', 'fb': '00'}, 'wind': '南风微风', 'week': '星期四', 'date': '20191114'}, 'day_20191115': {'temperature': '-4℃~8℃', 'weather': '晴', 'weather_id': {'fa': '00', 'fb': '00'}, 'wind': '西北风4-5级', 'week': '星期五', 'date': '20191115'}, 'day_20191116': {'temperature': '-4℃~8℃', 'weather': '晴', 'weather_id': {'fa': '00', 'fb': '00'}, 'wind': '西北风4-5级', 'week': '星期六', 'date': '20191116'}}}, 'error_code': 0}
successed!
0
参数关联接口
有时候,发送一个post请求,需要带上session,所以需要先获取这个session
# 导包
import requests
import re
#接口地址
url1 = "http://192.168.103.106:1080/webtours/nav.pl?in=home"
s = requests.session()# 为了保持和下一个接口建立相同的连接通道
res = s.get(url1)
# print(res.text)
usersession = re.findall(r'name=userSession value=(.+?)>',res.text)
print(usersession)
# 接口地址
url2 ="http://192.168.103.106:1080/webtours/login.pl"
para ={"userSession":usersession[0],"username":"jojo","password":"bean","login.x":"54","login.y":"11","login":"Login","JSFormSubmit":"off"}
# 发送post请求
r = s.post(url2,data=para)
print(r.text)