接口测试:身份认证(数字签名认证的接口) + 添加发布会

2023-12-14 03:05:17

上一篇:了解接口中的 数字签名-CSDN博客

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。