判断响应结果的正确性(检查点,断言)
用于比较测试的实际结果与预期结果
常用的比较运算符
==
精确比较
通常用于整体比较
比较适合json格式的响应文本
in
在...中
预期结果 in 实际结果
通常用于部分数据存在性判断
比较适合text/html类型的响应文本
使用正则表达式模糊匹配
re.search(规则字符串,字符串)
需要导入re包
作用:
在字符串中的任意位置匹配规则字符串,并返回第一个成功的匹配
如果没有找到,返回None
规则字符串
.*
.表示任意一个字符,但不匹配换行符
*表示可以重复0到多次
判断接口返回是否正确
"""
接口需求
接口地址:http://192.168.139.137:8000/login_action/
方法:post
参数:username,password
返回值:包含文本“<!--发布会表单-->”
数据库:guest
数据表: auth_user
"""
import requests
url = "http://192.168.139.137:8000/login_action/"
data = {'username':'admin','password':'admin123456'}
r = requests.post(url,data)
print(r.text)
print("<!--发布会表单-->" in r.text)
if '<!--发布会表单-->' in r.text:
print("正常登陆--测试通过")
else:
print('测试失败')
判断接口返回是否正确
"""
接口需求
接口地址:http://192.168.139.137:8000/sign/get_event_list/
方法:get
参数:eid
返回值:json类型
{'status': 10021, 'message': 'parameter error'}
"""
import requests
url = 'http://192.168.139.137:8000/sign/get_event_list/'
data = {'eid':""}
r = requests.get(url,data)# 省略url= params=
print(r.text)#结果只要是花括号就是json格式
print(r.json())
expect = {'status': 10021, 'message': 'parameter error'} # 预期结果字典
if expect == r.json():# 不能改成r.text 因为expect是字典,注意一个标点符号不同也会比对失败
print("测试通过")
else:
print("测试失败")
判断接口返回是否正确
"""
判断参数值不存在时,接口整体返回是否正确
接口需求
接口地址:http://192.168.139.137:8000/sign/get_event_list/
方法:get
参数:eid
返回值:json类型
{'status': 10022, 'message': 'query result is empty'}
数据库 guest
数据表 sign_event
"""
import requests
url = "http://192.168.139.137:8000/sign/get_event_list/"
data = {'eid':3}# 参数,将来就是测试用例
r = requests.get(url,data)
print(r.json())
expect = {'status': 10022, 'message': 'query result is empty'}
if expect == r.json():#预期结果 == 实际结果
print("测试通过")
else:
print("测试失败")
判断接口关键字段返回是否正确
"""
接口需求
接口地址:http://192.168.139.137/interface/4/
方法:get
参数:无
返回值:json类型
{'name': 'Balla_兔子', 'age': 22, 'isVip': True, 'isNul': None}
"""
import requests
url = "http://192.168.139.137/interface/4/"
r = requests.get(url)
expect = {'name': 'Balla_兔子', 'age': 22, 'isVip': True, 'isNul': None}
if expect == r.json():
print("测试通过")
else:
print("测试失败")
判断接口关键字段返回是否正确
"""
接口需求
接口地址:http://192.168.139.137:8000/sign/get_event_list/
方法:get
参数:eid
返回值:json类型
{'status': 200, 'message': 'success', 'data': {'eid': 1, 'name': '小米手机发布 会', 'limit': 2000, 'status': True, 'address': '北京奥林匹克公园水立方', ' start_time': '2016-11-21T15:25:19'}}
"""
# 导包
import requests
url = "http://192.168.139.137:8000/sign/get_event_list/"
data = {'eid':1}
# 指定地址和参数,发送请求
r = requests.get(url,data)
# 比对结果是否正确
status=200
message='success'
if status==r.json()['status'] and message==r.json()['message']:
print("测试通过")
else:
print("测试失败")
"""
模糊匹配响应中的关键数据
接口需求
接口地址:http://192.168.175.128/interface/5/login/
方法:post
参数:username,password
返回值:text/html
用户<u><b><font color=red>admin </font></b></u>登录成功!<p></body>
"""
# 使用正则表达式进行模糊匹配 --开发 运维 测试都有
# 正则 -- 符合要求的意思
import requests
url = "http://192.168.175.128/interface/5/login/"
data = {'username':'admin','password':'admin'}
r = requests.post(url,data)
print(r.text)
# 正则表达式 Regular Expression 符合规则的式子
regular = '.*用户.*admin.*登录成功.*'
# 用户左边有什么都可以 右边得有admin 在往右要有登陆成功
# .表示任意1个字符
# *表示有0到多个
# .*表示什么内容都可以
import re
# search表示 查找
result = re.search(regular,r.text)
print(result)
if result is not None:
print("测试通过")
else:
print("测试失败")