使用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. 在左侧可以运行单个测试

相关推荐
小糖学代码3 分钟前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨36 分钟前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
橙橙笔记1 小时前
Python的学习第一部分
python·学习
JAVA社区1 小时前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
弥树子1 小时前
踩坑记录:服务器内网调用接口,真实请求URL与官方公开URL不一致问题排查
开发语言·php
voidmort1 小时前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法
z落落2 小时前
C# ToCharArray + foreach遍历 + String与StringBuilder
开发语言·c#
学代码的真由酱2 小时前
Java多用户一对一网页聊天室-测试报告
java·开发语言·功能测试·测试
biter down2 小时前
基于 Pywinauto 的 QQ 音乐 GUI 自动化测试实践
python
人道领域2 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法