使用requests开发一个接口测试工具

简介: 使用requests开发一个接口测试工具

import requests
import traceback

class Inert(object):

__left_limit, __right_limit = '${', '}'

def __init__(self, base_url: str):
    self.base_url = base_url
    self.session = requests.Session()
    self.response = None
    self.json_resp = None
    self.params_pool = {}

def send_post_request(self, route: str, params=None):
    new_params = self.__format_statement(params)
    data = self.__format_params(params=new_params)
    try:
        self.response = self.session.post(self.base_url + route, data=data).text
    except Exception:
        print('[info] connect host error!')
    if self.response:
        try:
            self.json_resp = eval(self.response)
        except Exception:
            print(traceback.print_exc())

def send_get_request(self, route: str, params=None):
    try:
        self.response = self.session.get(url=self.base_url + route, params=params).text
    except Exception:
        print('[info] connect host error')
    if self.response:
        try:
            self.json_resp = eval(self.response)
        except Exception:
            print(traceback.print_exc())

def __format_params(self, params: str):
    """
    :param params: 需要解析的参数
    :return: 返回一个dict对象
    """
    new_dict = {}
    if not params:
        return
    if isinstance(params, dict):
        return params
    try:
        string_list = params.split("&")
        for string in string_list:
            index = string.find('=')
            key = string[:index]
            value = string[index + 1:]
            new_dict[key] = value
        return new_dict
    except Exception:
        print('[info] 参数有误!')

def save_param(self, key_name):
    """
    将参数添加到参数池中
    :param key_name:新的键名
    :return:
    """
    try:
        self.params_pool[key_name] = self.json_resp[key_name]
    except Exception:
        print("[info]参数不存在")

def add_headers(self, new_key, statement: str):
    """
    将参数添加到请求头中
    :param new_key:添加至请求头中的键名
    :param statement:
    :return:
    """
    value = self.__format_statement(statement=statement)
    try:
        self.session.headers[new_key] = value
    except Exception:
        print('[info]参数不存在!')

def __format_statement(self, statement: str):
    """
    :param statement: 对在参数池中的参数尝试进行格式化
    :return: 若statement存在或格式化失败则返回原语句,否则否会格式化后的语句
    """
    if isinstance(statement, dict):
        return statement
    if statement:
        for key in self.params_pool:
            statement = statement.replace(
                self.__left_limit + key + self.__right_limit,
                self.params_pool[key]
            )
    return statement

def delimiter(self, lift: str, right: str):
    """
    修改边界符
    :param lift: 左边界符
    :param right: 右边界符
    :return:
    """
    self.__left_limit = lift
    self.__right_limit = right
相关文章
|
20天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
12天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
92 17
Selenium:强大的 Web 自动化测试工具
|
4天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
30 11
|
23天前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
32 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
22天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
51 1
|
23天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
38 2
|
1月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
45 2
|
1月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
1月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
138 2
|
1月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
下一篇
DataWorks