当前位置: 首页 > news >正文

采用python test测试http接口

使用python test测试http接口

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

    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编写单元测试

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

    在这里插入图片描述

http://www.hskmm.com/?act=detail&tid=11868

相关文章:

  • CF2147 Codeforces Global Round 29 (Div. 1 + Div. 2) 解题报告
  • 数字图像基础知识
  • 详细介绍:农业XR数字融合工作站,赋能农业专业实践学习
  • 标题:分享一个值得推荐的免费云服务——阿贝云
  • PPT2Note使用说明
  • 设置Redis在CentOS7上的自启动配置
  • 挂载配置文件以Docker启动Redis服务
  • abc418d
  • Chapter 6 Joining Images
  • 动态主机配置协议(DHCP)中的中继机制及其配置
  • DDD - 概念复习
  • 软件工程第二次作业
  • CSP-J1S1_2025
  • Vdd Vcc
  • 基于ThinkPHP实现动态ZIP压缩包的生成
  • 使用Java实现用户的注册和登录流程
  • Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的困难解决方案
  • 准备工作之动态内存分配[基于郝斌课程]
  • 2025.6第一套六级听力生词
  • CSP-S 2025游记
  • atof() - 字符串转double类型
  • 完整教程:还在为第三方包 bug 头疼?patch-package 让你轻松打补丁!
  • Kubernetes(k8s)高可用性集群的构建
  • 在CentOS环境下升级GCC编译器
  • 详细介绍:深圳比斯特|电池组PACK自动化生产线厂家概述
  • Chapter 4 Shapes and Texts
  • 手动清除Ubuntu系统中的内存缓存
  • 消除 Vue SPA 刷新导致 404 的问题
  • Docker / Kubernetes 图形化管理工具--------Portainer
  • 【Excel】创建下拉选项框