接口测试:身份认证(数字签名认证的接口) + 添加发布会
2023-12-14 03:05:17
1、接口
名称 | 新增发布会 |
描述 | 新增发布会 |
URL | http://127.0.0.1:8000/api/add_event/ |
调用方法 | GET |
传入参数 | time? ? ? # 当前时间,如:1466436831 sign? ? ? # 签名 |
返回值 | {'status': 200, 'message': 'add event success'} |
状态码 | 10011:request error 10012:user sign null 10013:user sign timeout 10014:user sign error 200:add event success |
说明 | sign计算公式:MD5(spi_key+time) api_key需要申请获取 |
2、代码
import os
import sys
import unittest
from time import time
import requests
sys.path.append("..")
from data.readCsv import Csv_oper
import hashlib
base_dir = str(os.path.dirname(os.path.dirname(__file__)))
base_dir = base_dir.replace('\\','/')
event_Path = base_dir + '/data/event_data.csv'
guest_Path = base_dir + '/data/guest_data.csv'
class AddEventTest(unittest.TestCase):
''' 添加发布会 '''
def setUp(self) -> None:
self.base_url = "http://127.0.0.1:8000/api/sec_add_event/"
self.api_key = "&Guest-Bugmaster"
now_time = time()
self.client_time = str(now_time).split('.')[0] #时间戳转化为字符串,取小数点前的10位
md5 = hashlib.md5()
sign_str = self.client_time +self.api_key # 密钥字符串 + 客户端请求时间
sign_bytes_utf8 = sign_str.encode(encoding="utf-8")
md5.update(sign_bytes_utf8)
self.sign_md5 = md5.hexdigest() # 生成密钥
def tearDown(self) -> None:
print(self.result)
def test_add_event_request_error(self):
''' 请求方法正确 '''
r = requests.get(self.base_url)
self.result = r.json()
self.assertEqual(self.result['status'], 10011)
self.assertEqual(self.result['message'], 'request error')
def test_add_event_request_timeout(self):
''' 请求超时 '''
now_time = str(int(self.client_time)-61)
payload = {'eid':100, 'name': '一加4手机发布会100', 'limit': 2000, 'address': "重庆汇博", 'start_time': '2023-12-10 12:30:20',
'time':now_time,'sign':self.sign_md5}
r = requests.post(self.base_url, data=payload)
self.result = r.json()
self.assertEqual(self.result['status'], 10013)
self.assertEqual(self.result['message'], 'user sign timeout')
def test_add_event_success(self):
''' 签名正确 '''
payload = {'eid':100, 'name': '一加4手机发布会100', 'limit': 2000, 'address': "重庆汇博", 'start_time': '2023-12-10 12:30:20',
'time':self.client_time,'sign':self.sign_md5}
r = requests.post(self.base_url, data=payload)
self.result = r.json()
self.assertEqual(self.result['status'], 200)
self.assertEqual(self.result['message'], 'add event success')
def test_add_event_sign_error(self):
''' 签名正确 '''
payload = {'eid':100, 'name': '一加4手机发布会100', 'limit': 2000, 'address': "重庆汇博", 'start_time': '2023-12-10 12:30:20',
'time':self.client_time,'sign':'abc'}
r = requests.post(self.base_url, data=payload)
self.result = r.json()
self.assertEqual(self.result['status'], 10014)
self.assertEqual(self.result['message'], 'user sign error')
def test_add_event_sign_null(self):
''' 签名正确 '''
payload = {'eid':100, 'name': '一加4手机发布会100', 'limit': 2000, 'address': "重庆汇博", 'start_time': '2023-12-10 12:30:20'}
r = requests.post(self.base_url, data=payload)
self.result = r.json()
self.assertEqual(self.result['status'], 10012)
self.assertEqual(self.result['message'], 'user sign null')
if __name__ == '__main__':
# 初始化数据
table_name1 = 'sign_event'
c = Csv_oper()
c.init_data(table_name1,event_Path)
# 执行测试
unittest.main()
3、运行结果
文章来源:https://blog.csdn.net/qq_40384309/article/details/134834928
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!