使用python test测试http接口

使用python test测试http接口

  1. 获取token和控制session,后面大多数接口要带上这些信息

    python 复制代码
    import time
    import requests
    
    from common.aes_algorithm import AES
    from config.config import Config
    from config.log import log
    
    
    class Common:
        username = "admin"
        password = "888888"
        token = None
        user_id = None
        controlSession = None
    
        def __init__(self):
            pass
    
        @classmethod
        def login(cls):
            timestamp = int(time.time())
            password = AES.encrypt(cls.password, str(timestamp))
            data = {
                "username": cls.username,
                "password": password,
                "timestamp": timestamp,
            }
            response = requests.post(f"{Config.base_url}/user/login", json=data)
            response.raise_for_status()
            # 打印响应内容
            dataJson = response.json()
            log.debug(dataJson)
            if dataJson["status"] == 200:
                data = dataJson.get("data")
                cls.token = data.get("Authorization")
                cls.user_id = data.get("userID")
    
        @classmethod
        def get_control_session(cls):
            if cls.controlSession is None:
                timestamp = int(time.time())
                password = AES.encrypt(cls.password, str(timestamp))
                response = requests.post(
                    f"{Config.base_url}/user/verifyControlPasswd",
                    headers={"Authorization": cls.token},
                    json={
                        "userID": cls.user_id,
                        "password": password,
                        "timestamp": timestamp,
                    },
                )
                response.raise_for_status()
                dataJson = response.json()
                log.debug(dataJson)
                if dataJson["status"] == 200:
                    data = dataJson.get("data")
                    cls.controlSession = data.get("controlSession")
    
        def get_token(cls):
            cls.login()
            cls.get_control_session()
    
    if __name__ == "__main__":
        common = Common()
        common.get_token()
  2. 使用unittest编写单元测试

    python 复制代码
    import time
    import unittest
    
    import requests
    
    from common.login import Common
    from config.config import Config
    from config.log import log
    
    
    class StgyModeTest(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            cls.common = Common()
            cls.common.get_token()  # 只执行一次
    
            timestamp = int(time.time())
            cls.data = [
                {
                    "userID": Common.user_id,
                    "controlSession": Common.controlSession,
                    "timestamp": timestamp,
                    "mode": "powerBalanced",
                },
                {
                    "userID": Common.user_id,
                    "controlSession": Common.controlSession,
                    "timestamp": timestamp,
                    "mode": "socBalanced",
                },
                {
                    "userID": Common.user_id,
                    "controlSession": Common.controlSession,
                    "timestamp": timestamp,
                    "mode": "customRatio",
                    "powerWeights": [
                        {"pcsCode": "pcs1", "ratio": 0.3},
                        {"pcsCode": "pcs2", "ratio": 0.7},
                        {"pcsCode": "pcs3", "ratio": 0},
                    ],
                },
            ]
    
        def test_set_power_balanced_stgy(self):
            response = requests.post(
                f"{Config.base_url}/strategy/setStrategyMode",
                headers={"Authorization": Common.token},
                json=self.data[0],
            )
            log.info(f"set stgy mode response: {response.text}")
            response.raise_for_status()
            # 打印响应内容
            dataJson = response.json()
            if dataJson["status"] == 200:
                data = dataJson.get("data")
                log.info(f"set stgy mode success, data: {data}")
    
        def test_set_soc_balanced_stgy(self):
            response = requests.post(
                f"{Config.base_url}/strategy/setStrategyMode",
                headers={"Authorization": Common.token},
                json=self.data[1],
            )
            log.info(f"set stgy mode response: {response.text}")
            response.raise_for_status()
            # 打印响应内容
            dataJson = response.json()
            if dataJson["status"] == 200:
                data = dataJson.get("data")
                log.info(f"set stgy mode success, data: {data}")
    
        def test_set_custom_power_weights_stgy(self):
            response = requests.post(
                f"{Config.base_url}/strategy/setStrategyMode",
                headers={"Authorization": Common.token},
                json=self.data[2],
            )
            log.info(f"set stgy mode response: {response.text}")
            response.raise_for_status()
            # 打印响应内容
            dataJson = response.json()
            if dataJson["status"] == 200:
                data = dataJson.get("data")
                log.info(f"set stgy mode success, data: {data}")
    
        # 获取策略接口
        def test_get_stgy_mode(self):
            response = requests.get(
                f"{Config.base_url}/strategy/getStrategyMode",
                headers={"Authorization": Common.token},
            )
            log.info(f"get stgy mode response: {response.text}")
    
    
    if __name__ == "__main__":
        unittest.main()

vscode里面启用unittest插件

  1. 代开vscode设置,搜索python test,启用unittest

  2. 在左侧可以运行单个测试

相关推荐
宸津-代码粉碎机11 分钟前
FastUtil+AI多Agent实战:Java AI项目性能终极加速方案
java·服务器·开发语言·python·安全·php
for_ever_love__14 分钟前
python基础语法学习: 装饰器
python·学习·装饰器·装饰器模式
Python私教27 分钟前
Python 3.15 来了:free-threading 稳定 ABI 能给高并发服务带来什么
开发语言·python
tju新生代魔迷35 分钟前
Python学习日记2
python·学习
Zane19941 小时前
create_task 和直接 await 到底有什么不一样?asyncio 的 Task、gather 与并发数量控制
后端·python
李可以量化1 小时前
Redis 从了解到精通(四・下):分区技术原理与选型全解析
python
Python私教2 小时前
创业团队做管理系统,别先堆页面:我把 14 个问题做成了需求门禁
后端·python·架构
Logintern092 小时前
[Matlab] 遗传算法求解TSP入门
开发语言·matlab
云半S一2 小时前
Python学习总结
python·学习·学习分享
苏子寒2 小时前
Nano-VLLM全代码解析笔记(6)-embed_head和linear
pytorch·笔记·python·机器学习·ai·nlp·vllm