判斷響應結果的正確性(檢查點,斷言)
用於比較測試的實際結果與預期結果
常用的比較運算符
==
精確比較
通常用於整體比較
比較適合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("測試失敗")
