接口测试定义:
按照约定的格式,给待测软件传入某种数据,之后检查接口给的返回值是否正确的过程。通过工具postman或者代码requests报存一些记录
使用postman测试接口
示例:测试用户名是否登录拓展:配置环境变量我们还可以事先把协议、端口和路径前缀配置到测试的环境变量中,今后不用每次都填写
传统的测试路径:新的测试方式:使用方式:
导出测试我们每一次使用postman测试的记录,都可点击进行保存记录。
还可以右击收藏包导出json文件。导入测试我们可以将已有的测试包json文件导出postman
使用requests测试接口
Requests,是Python最流行的第三方模块,其接口人性化的设计远比Python的原生urllib模块更加方便使用,在数据采集、测试开发中占据了举足轻重的地位。Requests是一个功能强大的HTTPClient,能够帮助我们发送HTTP请求,并获取响应
我们需要安装:
响应对象Response和编码问题
import requests
# 访问百度
# 返回值为response对象
resp = requests.get('http://www.baidu.com')
# 响应状态码
print(resp.status_code)
# 响应头
print(resp.headers)
# 响应体(未解码)
# print(resp.content)
# 编码问题:不修改编码的话,会出现乱码问题
print(resp.encoding) # 默认是ISO-8859-1
# 修改编码为:utf-8
resp.encoding = 'utf-8'
# 响应体(解码)
print(resp.text)
注:Responsjson()方法可以将接口json格式的返回内容自动转换为python的字典
import requests
# 这里请求 postman 提供的地址,他会返回一个 json 格式的响应体
url = 'https://postman-echo.com/ip'
resp = requests.get(url)
# text:输出json字符串
print(resp.text, type(resp.text))
# json():json转字典格式输出
print(resp.json(), type(resp.json()))
右击运行结果:
{'ip':'116.30.198.204'}
{'ip': '116.30.198.204'}
注意:如果JSON解码失败,resp.json()就会抛出一个异常。例如,响应内容是html格式的,尝试访问resp.json()将会抛出异常。
发送GET请求
传递URL参数
import requests
info = {
'name': 'admin',
'password': '123'
}
resp = requests.get('https://postman-echo.com/get', params=info) # 方式一
# resp = requests.get('https://postman-echo.com/get?name=admin&pwd=123') # 方式二
print(resp.text)
定制请求头
import requests
resp = requests.get('http://postman-echo.com/headers')
print(resp.text)
info ={
'name': 'admin'
}
resp = requests.get('http://postman-echo.com/headers', headers=info)
print(resp.text)
定制cookies
import requests
resp = requests.get('http://postman-echo.com/cookies')
print(resp.text)
info ={
'name': 'admin',
'pwd': '123'
}
resp = requests.get('http://postman-echo.com/cookies', cookies=info)
print(resp.text)
发送POST请求
在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json
data主要是发送表单格式报文json主要是发送json格式报文
以测试登录接口示例:
import requests
info={
'username': 'admin',
'password': 'chuanzhi',
'remembered': True
}
# json以json格式发送请求
resp = requests.post('http://127.0.0.1:8000/login/', json=info)
print(resp.json())
结果:
{'code': 0, 'errmsg': 'ok'}
利用requests.session进行状态保持
我们通过浏览器进行登录操作时,服务器会返回cookie,浏览器会把这些cookie存储下来,下次发起请求就把之前保存的cookie携带着发送给服务器,从而实现了状态保持。我们通过requests进行登录操作或者其他操作,服务器返回了cookie,下次再通过requests发起其他请求时,requests并不会把前面请求的cookie携带着发送给服务器,也就是说我们通过requests是无法自动实现状态保持的。session实例在请求了一个网站后,对方服务器设置在本地的cookie会保存在session对象中,下一次再使用session请求对方服务器的时候,会带上前一次的cookie
比如下面代码:当我们进行登录接口测试成功后,进行获取用户信息接口测试,会提示未登录
import requests
info={
'username': 'admin',
'password': 'chuanzhi',
'remembered': True
}
# json以json格式发送请求
resp = requests.post('http://127.0.0.1:8000/login/', json=info)
print('测试登陆接口:',resp.json())
resp = requests.get('http://127.0.0.1:8000/info/')
print('获取用户信息', resp.json())
结果:
测试登陆接口: {'errmsg': 'ok', 'code': 0}
获取用户信息 {'errmsg': '未登陆!', 'code': 400}
session方式状态保持:
'''
1、创建requests.Session()对象
2、使用对象离的方法进行测试,就可以进行状态保持
'''
import requests
# 创建对象
s = requests.Session()
info={
'username': 'admin',
'password': 'chuanzhi',
'remembered': True
}
# json以json格式发送请求
resp = s.post('http://127.0.0.1:8000/login/', json=info)
print('测试登陆接口:',resp.json())
resp = s.get('http://127.0.0.1:8000/info/')
print('获取用户信息', resp.json())
结果:
测试登陆接口: {'errmsg': 'ok', 'code': 0}
获取用户信息 {'info_data': {'email_active': False, 'username': 'admin', 'mobile': '', 'email': '1@1.com'}, 'errmsg': 'ok', 'code': 0}
文章为作者独立观点,不代表股票自动交易程序化数据接口观点