当前位置: 首页 > 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.jsqmd.com/news/881/

相关文章:

  • CF2147 Codeforces Global Round 29 (Div. 1 + Div. 2) 解题报告
  • US$29 Vag R250 VW Audi Dashboard Programmer Free Shipping
  • 数字图像基础知识
  • 详细介绍:农业XR数字融合工作站,赋能农业专业实践学习
  • 标题:分享一个值得推荐的免费云服务——阿贝云
  • PPT2Note使用说明
  • 第三周:面向对象入门2与类的识别
  • 详细介绍:Flink-新增 Kafka source 引发状态丢失导致启动失败
  • 【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统? 另外一种实现方式
  • GEE训练教程:Sentinel-2卫星影像揭秘飓风奥蒂斯破坏力 - 指南
  • 设置Redis在CentOS7上的自启动配置
  • 挂载配置文件以Docker启动Redis服务
  • abc418d
  • Chapter 6 Joining Images
  • 动态主机配置协议(DHCP)中的中继机制及其配置
  • DDD - 概念复习
  • 进一步理解自适应卡尔曼滤波(AKF) - 教程
  • CSP-J1S1_2025
  • 完整教程:基于Spring Boot植物销售管理系统的设计与实现
  • ​​Final Cut Pro 11.0 for Mac 剪视频安装教程|DMG文件安装步骤详解​(附安装包)
  • Vdd Vcc
  • 实用指南:物联网赋能24H共享书屋:智能化借阅管理的完整解决方案!
  • 基于ThinkPHP实现动态ZIP压缩包的生成
  • 使用Java实现用户的注册和登录流程
  • Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的困难解决方案
  • 准备工作之动态内存分配[基于郝斌课程]
  • 2025.6第一套六级听力生词
  • CSP-S 2025游记
  • Chapter 5 Wrap Perspective
  • atof() - 字符串转double类型