当前位置: 首页 > 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.zskr.cn/news/8923.html

相关文章:

  • CF2147 Codeforces Global Round 29 (Div. 1 + Div. 2) 解题报告
  • 详细介绍:农业XR数字融合工作站,赋能农业专业实践学习
  • 第三周:面向对象入门2与类的识别
  • 【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统? 另外一种实现方式
  • GEE训练教程:Sentinel-2卫星影像揭秘飓风奥蒂斯破坏力 - 指南
  • abc418d
  • Chapter 6 Joining Images
  • 动态主机配置协议(DHCP)中的中继机制及其配置
  • 进一步理解自适应卡尔曼滤波(AKF) - 教程
  • 完整教程:基于Spring Boot植物销售管理系统的设计与实现
  • Vdd Vcc
  • 使用Java实现用户的注册和登录流程
  • Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的困难解决方案
  • Chapter 5 Wrap Perspective
  • 手动清除Ubuntu系统中的内存缓存
  • 插值相关
  • 详解scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别
  • 模拟输入的过程
  • Manim实现水波纹特效
  • CSP 2025 S1 游记
  • JS之使用for...of赋值失败的原因分析
  • Linux /lib/modules/$(uname -r)/ 目录功能作用详解
  • 软件工程第二次作业_个人项目
  • Chapter 3 Resize and Cropping
  • 解决Kubernetes集群中master节点无法与node节点通信的策略
  • 配置Nginx以支持Websocket连接的方法
  • Extundelete工具恢复数据
  • 最新!!!MySQL环境搭建(windows系统) - 详解
  • SQLite数据库 - 教程
  • 【Bluedroid】A2DP Source 音频流暂停流程解析[3]:AVDTP 协议中 Suspend Accept 响应的处理流程与建立分析(Suspend Accept)