news 2026/4/20 12:39:19

接口自动化框架里常用的小工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口自动化框架里常用的小工具

在日常编程工作中,我们常常需要处理各种与时间、数据格式及配置文件相关的问题。本文整理了一系列实用的Python代码片段,涵盖了日期时间转换、数据格式化与转换、获取文件注释以及读取配置文件等内容,助力开发者提升工作效率,轻松应对常见任务。

1. 秒级与毫秒级时间戳获取

  1. # 获取当前秒级时间戳

  2. def millisecond(add=0):

  3. return int(time.time()) + add

  4. # 获取当前毫秒级时间戳

  5. def millisecond_new():

  6. t = time.time()

  7. return int(round(t * 1000))

这两个函数分别提供了获取当前时间的秒级和毫秒级时间戳的功能。millisecond()函数允许传入一个可选参数add,用于增加指定的时间偏移量。‍

2. 当前日期字符串获取

# 获取当前时间日期: 20211009

  1. def getNowTime(tianshu=0):

  2. shijian = int(time.strftime('%Y%m%d')) - tianshu

  3. print(shijian)

  4. return shijian

getNowTime()函数返回当前日期(格式为YYYYMMDD),并支持传入参数tianshu以减去指定天数。该函数适用于需要处理日期型数据且仅关注年月日的情况。

3. 修复接口返回无引号JSON数据​​​​​​​

  1. def json_json():

  2. with open("源文件地址", "r") as f, open("目标文件地址", "a+") as a:

  3. a.write("{")

  4. for line in f.readlines():

  5. if "[" in line.strip() or "{" in line.strip():

  6. formatted_line = "'" + line.strip().replace(":", "':").replace(" ", "") + ","

  7. print(formatted_line) # 输出修复后的行

  8. a.write(formatted_line + "\n")

  9. else:

  10. formatted_line = "'" + line.strip().replace(":", "':'").replace(" ", "") + "',"

  11. print(formatted_line) # 输出修复后的行

  12. a.write(formatted_line + "\n")

  13. a.write("}")

此函数用于处理从接口复制的未正确格式化的JSON数据,修复缺失的引号,并将其写入新的文件。源文件与目标文件的路径需替换为实际路径。

4. 将URL查询字符串转为JSON​​​​​​​

  1. from urllib.parse import urlsplit, parse_qs

  2. def query_json(url):

  3. query = urlsplit(url).query

  4. params = dict(parse_qs(query))

  5. cleaned_params = {k: v[0] for k, v in params.items()}

  6. return cleaned_params

query_json()函数接收一个包含查询字符串的URL,解析其查询部分,将其转换为字典形式,并清理多值参数,只保留第一个值。

5.文件注释提取​​​​​​​

  1. import os

  2. def get_first_line_comments(directory, output_file):

  3. python_files = sorted([f for f in os.listdir(directory) if f.endswith('.py') and f != '__init__.py'])

  4. comments_and_files = []

  5. for file in python_files:

  6. filepath = os.path.join(directory, file)

  7. with open(filepath, 'r', encoding='utf-8') as f:

  8. first_line = f.readline().strip()

  9. if first_line.startswith('#'):

  10. comment = first_line[1:].strip()

  11. comments_and_files.append((file, comment))

  12. with open(output_file, 'w', encoding='utf-8') as out:

  13. for filename, comment in comments_and_files:

  14. out.write(f"{filename}: {comment}\n")

  15. # 示例用法

  16. get_first_line_comments('指定文件夹', '指定生成文件路径.txt')

  17. get_first_line_comments()函数遍历指定目录下的.py文件,提取每份文件的第

一行注释(以#开头),并将文件名与注释对应关系写入指定的文本文件中。

6.读取配置INI文件​​​​​​​

  1. import sys

  2. import os

  3. import configparser

  4. class ReadConfig:

  5. def __init__(self, config_path):

  6. self.path = config_path

  7. def read_sqlConfig(self, fileName="sql.ini"):

  8. read_mysqlExecuteCon = configparser.ConfigParser()

  9. read_mysqlExecuteCon.read(os.path.join(self.path, fileName), encoding="utf-8")

  10. return read_mysqlExecuteCon._sections

  11. def read_hostsConfig(self, fileName="hosts.ini"):

  12. read_hostsCon = configparser.ConfigParser()

  13. read_hostsCon.read(os.path.join(self.path, fileName), encoding="utf-8")

  14. return read_hostsCon._sections

  15. # 示例用法

  16. config_reader = ReadConfig('配置文件所在路径')

  17. sql_config = config_reader.read_sqlConfig()

  18. hosts_config = config_reader.read_hostsConfig()["hosts"]

ReadConfig类封装了对INI配置文件的读取操作,支持读取sql.ini和hosts.ini文件。通过实例化该类并指定配置文件路径,即可方便地获取所需配置信息。

7.设置全局文件路径​​​​​​​

  1. import os

  2. def setFilePath(filePath):

  3. current_module_path = os.path.dirname(os.path.abspath(__file__))

  4. project_root_path = os.path.dirname(os.path.dirname(current_module_path))

  5. path = os.path.join(project_root_path, filePath.lstrip('/'))

  6. return os.path.abspath(path)

  7. # 示例用法

  8. confPath = setFilePath("地址文件路径")

setFilePath()函数根据提供的相对路径,结合当前模块的绝对路径,计算出项目根目录下的目标文件或目录的绝对路径,便于在项目中统一管理资源位置。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

​​​​​​​

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:33:29

大模型转行攻略:从零到高薪,四大方向+实战路线图(建议收藏)

本文详解大模型转行攻略,介绍四大方向(数据、平台、应用、部署),分析新人三大误区,并提供实用入门建议和三阶段路线图。文章强调选对方向、打好基础、注重工程能力的重要性,帮助读者在大模型领域少走弯路&a…

作者头像 李华
网站建设 2026/4/19 7:25:22

07-上下文感知的RAG案例

实现了一个带上下文记忆的 RAG(检索增强生成)问答系统,核心能力是: 1.从指定网页加载 Agent 相关知识并构建向量数据库; 2.基于用户问题从向量库检索相关上下文; 3.结合聊天历史理解用户问题(比…

作者头像 李华
网站建设 2026/4/15 12:59:05

LobeChat婚礼祝词撰写助手

LobeChat婚礼祝词撰写助手 在一场婚礼上,最动人的时刻之一,往往是父亲或母亲站上台前,声音微颤地念出那封写给新人的祝福。那些话语里藏着十几年的牵挂、一夜夜的辗转反侧,却常常因为“不会表达”而显得干瘪、仓促,甚至…

作者头像 李华
网站建设 2026/4/20 11:44:05

GPT-5.2被Gemini 3 Pro碾压?真实编程场景实测,结果出人意料!

本文对比测试了GPT-5.2与Gemini 3 Pro在编程任务上的表现,通过烟花前端效果、学术论文分析和RAG代码重构三个场景进行评测。结果显示,Gemini 3 Pro在理解指令和代码重构方面表现更佳,而GPT-5.2在处理复杂任务时遇到困难。文章提示程序员在选择…

作者头像 李华
网站建设 2026/4/18 14:31:07

【收藏】大模型处理长文本的最佳实践:分步处理法

大模型处理长文本面临上下文窗口限制和处理能力下降的挑战。文章提出两种解决方案:多次生成后拼接完整报告,或分批处理数据后再总结。推荐采用分步骤处理方法,因其更符合人类操作习惯,也适应报告不同部分的不同需求。处理长文本时…

作者头像 李华
网站建设 2026/4/18 14:26:01

GTP协议

GTP协议 一、GTP协议 GTP(GPRS 隧道协议)是一种应用层协议,主要依赖 UDP、TCP,偶尔还有 SCTP,在 3G、4G 和 5G 等移动网络中传输数据包。它封装用户数据和信令,利用这些底层传输进行传输,但不提…

作者头像 李华