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

Swagger+LangChain实战:5步搞定AI自动生成接口测试脚本(附完整代码)

SwaggerLangChain实战5步构建AI驱动的接口测试自动化流水线在当今快速迭代的软件开发环境中接口测试自动化已成为保障产品质量的关键环节。传统手工编写测试脚本的方式不仅效率低下还难以应对频繁变更的接口需求。本文将介绍如何利用Swagger文档解析与LangChain技术栈构建一套智能化的接口测试脚本生成系统实现从接口文档到可执行测试代码的全自动转换。1. 环境准备与工具链配置在开始之前我们需要搭建一个稳定可靠的开发环境。以下是核心组件及其作用Python 3.8作为基础编程语言环境Requests库用于获取Swagger JSON数据LangChain框架构建AI处理流水线的核心工具pytest测试框架最终生成的测试脚本运行环境配置基础环境的命令如下# 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装依赖包 pip install requests langchain openai pytest提示建议使用PyCharm或VS Code作为开发IDE它们对Python生态有很好的支持能提供代码补全和调试功能。2. Swagger文档解析与关键信息提取Swagger文档通常以JSON格式提供接口的完整描述我们的第一步是从中提取出测试所需的关键信息。这包括接口路径、请求方法、参数定义以及响应模型。以下是一个典型的Swagger JSON结构示例{ swagger: 2.0, info: { title: 电商平台API, version: 1.0.0 }, paths: { /products: { get: { summary: 获取商品列表, parameters: [...], responses: { 200: { schema: { $ref: #/definitions/ProductList } } } } } }, definitions: { ProductList: { type: object, properties: {...} } } }我们需要编写专门的解析器来提取这些信息def parse_swagger(swagger_json): 解析Swagger文档提取接口测试所需的关键信息 :param swagger_json: Swagger文档的JSON对象 :return: 结构化接口信息字典 result { basePath: swagger_json.get(basePath, ), interfaces: [], models: swagger_json.get(definitions, {}) } for path, methods in swagger_json.get(paths, {}).items(): for method, details in methods.items(): if method.lower() not in [get, post, put, delete]: continue interface { path: path, method: method.upper(), summary: details.get(summary, ), parameters: details.get(parameters, []), responses: details.get(responses, {}) } result[interfaces].append(interface) return result3. LangChain提示工程设计与优化LangChain的强大之处在于其链式处理能力我们可以设计多个专门的提示模板让AI逐步完成从接口文档到测试脚本的转换。3.1 接口需求文档生成提示from langchain.prompts import PromptTemplate req_doc_prompt PromptTemplate( input_variables[swagger_data], template 你是一位专业的API文档工程师请根据提供的Swagger接口信息 生成详细的接口需求文档。要求 1. 每个接口单独一个章节 2. 包含完整的请求参数说明 3. 包含响应数据结构说明 4. 使用Markdown格式输出 Swagger接口信息 {swagger_data} )3.2 测试用例生成提示test_case_prompt PromptTemplate( input_variables[api_doc], template 根据以下API文档设计全面的测试用例 1. 正向测试用例有效输入 2. 边界值测试用例 3. 异常测试用例无效输入 4. 安全性测试用例 对每个测试用例需明确 - 测试目的 - 输入参数 - 预期结果 API文档 {api_doc} )3.3 自动化脚本生成提示auto_script_prompt PromptTemplate( input_variables[test_cases], template 根据以下测试用例使用pytest框架编写自动化测试脚本。 要求 1. 使用requests库发送HTTP请求 2. 实现参数化测试 3. 包含合理的断言 4. 支持Allure测试报告 测试用例 {test_cases} )4. 构建端到端的处理流水线将上述组件串联起来形成一个完整的自动化处理链from langchain.chains import SequentialChain from langchain.llms import OpenAI # 初始化LLM llm OpenAI(temperature0.3) # 构建处理链 processing_chain SequentialChain( chains[ LLMChain(llmllm, promptreq_doc_prompt, output_keyapi_doc), LLMChain(llmllm, prompttest_case_prompt, output_keytest_cases), LLMChain(llmllm, promptauto_script_prompt, output_keytest_scripts) ], input_variables[swagger_data], output_variables[test_scripts], verboseTrue ) # 执行整个流水线 def generate_test_scripts(swagger_url): # 获取Swagger JSON swagger_json requests.get(swagger_url).json() # 解析关键信息 parsed_data parse_swagger(swagger_json) # 运行处理链 result processing_chain.run({ swagger_data: json.dumps(parsed_data, indent2) }) return result[test_scripts]5. 测试脚本的落地与优化生成的测试脚本需要进一步优化以适应实际项目需求。以下是几个关键优化点5.1 脚本结构优化典型的测试目录结构应包含tests/ ├── conftest.py # 公共fixture ├── test_apis/ # API测试脚本 ├── data/ # 测试数据 └── reports/ # 测试报告5.2 公共功能封装将通用功能封装成工具函数# tests/conftest.py import pytest import requests pytest.fixture def api_client(): class APIClient: def __init__(self, base_url): self.base_url base_url def request(self, method, endpoint, **kwargs): url f{self.base_url}{endpoint} return requests.request(method, url, **kwargs) return APIClient(https://api.example.com)5.3 参数化测试示例# tests/test_apis/test_products.py import pytest pytest.mark.parametrize(product_id,expected_status, [ (123, 200), (invalid_id, 400), (, 404) ]) def test_get_product(api_client, product_id, expected_status): response api_client.request( GET, f/products/{product_id} ) assert response.status_code expected_status5.4 Allure报告集成# pytest.ini [pytest] addopts --alluredir./reports# 生成报告 pytest tests/ allure serve ./reports通过以上五个步骤我们建立了一个完整的AI驱动接口测试自动化流水线。这套方案不仅能大幅提升测试脚本的开发效率还能确保测试覆盖的全面性。在实际项目中可以根据具体需求调整各环节的提示词和代码模板使其更贴合团队的技术栈和测试规范。

相关文章:

Swagger+LangChain实战:5步搞定AI自动生成接口测试脚本(附完整代码)

SwaggerLangChain实战:5步构建AI驱动的接口测试自动化流水线 在当今快速迭代的软件开发环境中,接口测试自动化已成为保障产品质量的关键环节。传统手工编写测试脚本的方式不仅效率低下,还难以应对频繁变更的接口需求。本文将介绍如何利用Swag…...

K3s国内镜像加速实战:从安装到部署Nginx的完整避坑指南

K3s国内镜像加速实战:从安装到部署Nginx的完整避坑指南 对于国内开发者而言,Kubernetes的学习和使用常常面临一个现实问题——镜像拉取缓慢甚至失败。而轻量级Kubernetes发行版K3s凭借其精简设计和低资源消耗,正成为本地开发和边缘计算的热门…...

Splunk实战:5分钟搞定Windows安全日志分析(附常见错误排查)

Splunk实战:5分钟定位Windows服务器安全威胁的黄金法则 当凌晨三点服务器告警铃声响起时,大多数运维人员的第一反应往往是手足无措。去年某金融公司遭遇的APT攻击事件中,攻击者正是利用管理员对安全日志的迟钝响应,在48小时内横向…...

django基于Python的膳食营养健康系统 基于机器学习的个人健康饮食推荐系统

目录技术选型与框架搭建数据准备与模型设计核心功能模块系统集成与部署测试与迭代示例代码片段(推荐模型训练)关键注意事项项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术选型与框架搭建 后端框架&…...

解决pytorch_quantization安装难题:从错误到成功的完整指南

1. 为什么你的pytorch_quantization安装总是失败? 最近在折腾模型量化时,发现很多同行都在pytorch_quantization这个工具包的安装上栽了跟头。我自己也反复折腾了好几次,总结下来主要有三大坑:源配置冲突、依赖缺失和环境不兼容。…...

【技术解读】NeuroLM:当EEG成为LLM的“第二语言”,多任务脑电分析的统一范式

1. 当脑电波遇上大语言模型:NeuroLM的技术革命 想象一下,如果你的脑电波能像外语一样被AI翻译和理解,会是怎样的场景?这正是NeuroLM带来的颠覆性突破。这个将EEG(脑电图)信号视为"第二语言"的通用…...

Mapbox-GL 2.x 收费了?别慌,手把手教你无缝迁移到免费开源的 Maplibre-GL

Mapbox-GL 2.x 收费迁移指南:零成本切换至Maplibre-GL的实战手册 当Mapbox-GL-JS在2.x版本转向闭源收费模式时,许多依赖其开源特性的开发者陷入了两难。本文将带你深入剖析迁移到Maplibre-GL的技术路径,从API兼容性测试到样式文件转换&#x…...

(-aaa-) Multipass 1.17.x 打通了:虚拟机与宿主机的双向访问历史难点,不再需要设置麻烦的网桥、iptables、nftables 了? (***)

Multipass 解决了&#xff1a;虚拟机与宿主机的双向访问历史难点?mpqemubr0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.59.27.1 netmask 255.255.255.0 broadcast 10.59.27.255这个难点难道是通过在宿主机中设置了网关 mpqemubr0: 的缘故吗&#…...

零信任组网新玩法:用天翼云AccessOne和朋友共享本地K8s集群(避坑指南)

零信任组网新玩法&#xff1a;用天翼云AccessOne和朋友共享本地K8s集群&#xff08;避坑指南&#xff09; 在数字化协作日益普及的今天&#xff0c;如何安全地共享本地资源成为技术爱好者们关注的焦点。传统VPN方案虽然能实现远程访问&#xff0c;但存在权限控制粗放、内网暴露…...

# 蒙特卡罗 #Monte Carlo #风电功率预测 #Kmeans 1 采用蒙特卡洛法仿真

# 蒙特卡罗 #Monte Carlo #风电功率预测 #Kmeans1 采用蒙特卡洛法仿真&#xff0c;生成n组随机风功率出力场景&#xff1b; 2 利用Kmeans算法对n个场景进行聚类&#xff0c;缩减场景&#xff1b; 3 求出缩减后的场景对应的出力概率&#xff1b;并求出不确定出力曲线。 &#xf…...

Vue Flow实战:5分钟搞定工业设备流程图(附完整代码)

Vue Flow工业流程图实战&#xff1a;5分钟构建产线可视化系统 在工业自动化领域&#xff0c;设备连接流程的可视化一直是工程师们的痛点。传统绘图工具难以满足动态调整需求&#xff0c;而专业工业软件又过于笨重。Vue Flow作为基于Vue.js的轻量级流程图库&#xff0c;恰好填补…...

基于A*算法的往返式全覆盖路径规划的改进算法及MATLAB实现代码

基于A*算法的往返式全覆盖路径规划的改进算法 matlab实现代码 算法一 &#xff05;&#xff05;往返式全覆盖路径规划 &#xff05;通过建立二维栅格地图&#xff0c;设置障碍物&#xff0c;以及起始点 &#xff05;根据定义往返式路径规划的定义的优先级运动规则从起始点开始进…...

ABAQUS纤维复合材料热固化仿真:子粘弹性模型与内附CAE文件

ABAQUS纤维复合材料热固化仿真子粘弹性模型&#xff0c;内附CAE文件搞纤维复合材料热固化仿真的兄弟应该都懂&#xff0c;固化过程那个应力变化简直玄学。ABAQUS自带的粘弹性模型有时候跟实际曲线对不上号&#xff0c;自己写子程序又容易掉头发。最近折腾了个基于广义Maxwell模…...

基于华为eNSP的园区网防火墙高可靠与安全策略实战

1. 华为eNSP与园区网防火墙入门指南 第一次接触华为eNSP模拟器时&#xff0c;我被它强大的网络设备仿真能力震撼到了。这个免费的模拟器不仅能完整还原华为路由交换设备的功能&#xff0c;还能模拟防火墙、AC等安全设备&#xff0c;特别适合我们这些需要实践但又缺乏真实设备的…...

Matlab遗传优化算法求解生鲜配送问题的路径优化与时间窗管理:考虑新鲜度与货损成本的解决方案...

Matlab遗传优化算法等算法 求解 生鲜配送问题 路径优化 时间窗 新鲜度 货损成本 等约束 程序算法参考文献半夜盯着冷库监控屏的时候&#xff0c;突然想到生鲜配送这活儿真是比炒菜还讲究火候。既要卡着菜市场凌晨三点半的到货时间&#xff0c;又要保证超市货架上的绿叶菜在早…...

三电平逆变器实战:从SVPWM调制到中点平衡的硬核玩法

三电平逆变器 仿真 SVPWM调制 中点电位平衡控制 可选svpwm or spwm T型 I型NPC和ANPC&#xff08;拓扑都有可以选&#xff09; 包含三相逆变器参数设计&#xff0c;SVPWM&#xff0c;直流均压控制&#xff0c;双闭环控制说明文档 直流电压750V&#xff0c;输出交流电压220V&…...

光伏锂电池储能功率协调控制系统仿真探索

光伏锂电池储能功率协调控制系统仿真 [1]左侧光伏Boost控制部分&#xff1a;采用扰动观察法来进行MPPT最大功率跟踪&#xff0c;其中可以改变光照和温度模拟环境工况阶跃&#xff1a; [2]锂电池双向Buck_Boost&#xff1a;采用双闭环控制策略&#xff0c;给定负载电压外环&…...

生成OFDM信号时,先得把数据映射到子载波上。128个子载波里实际用120个(掐头去尾防频谱泄露),用16QAM调制的话代码大概长这样

OFDM基于块状导频的信道估计算法仿真 本次仿真载频为2GHz&#xff0c;带宽1MHz&#xff0c;子载波数128个&#xff0c;cp为16 子载波间隔为7.8125kHz 一个ofdm符号长度为128us&#xff0c;cp长度为16us 采用16QAM调制方式 最大doppler频率为132Hz 多径信道为5径 导频符号间…...

现代控制理论报告:线性系统理论及MATLAB仿真下的状态观测器与状态反馈控制设计与仿真详解报告...

现代控制理论报告&#xff0c;线性系统理论&#xff0c;MATLAB仿真&#xff0c;状态观测器与状态反馈控制的设计与仿真。 代码详细报告simulink仿真最近在搞现代控制理论的项目&#xff0c;发现状态观测器和状态反馈这俩兄弟真是形影不离。手头有个倒立摆的案例&#xff0c;系统…...

高效稳定的六轴机械手程序:信捷XD5和威纶触摸屏编写,成熟可靠且具有借鉴价值高,附带详尽注释

六轴机械手程序 用信捷XD5和威纶触摸屏编写。此程序已经实际设备上批量应用&#xff0c;程序成熟可靠&#xff0c;借鉴价值高&#xff0c;程序有注释。最近在车间摸鱼的时候翻到一个挺有意思的六轴机械手项目&#xff0c;用的是信捷XD5 PLC配威纶TK8071iQ触摸屏。这玩意儿已经…...

Armbian系统下1Panel面板端口被UFW拦截?三步搞定访问问题

Armbian系统下1Panel面板端口被UFW拦截的终极解决方案 问题背景与核心痛点 当你兴奋地在Armbian系统上部署了1Panel面板&#xff0c;准备大展身手时&#xff0c;突然发现面板无法访问——这种场景对于刚接触Armbian的新手来说简直是噩梦。问题的根源往往在于UFW防火墙的默认配置…...

MySQL UDF提权实战:从编译到提权的完整避坑指南(附靶机复现)

MySQL UDF提权实战&#xff1a;从编译到提权的完整避坑指南&#xff08;附靶机复现&#xff09; 在数据库安全领域&#xff0c;UDF&#xff08;用户自定义函数&#xff09;提权是一种经典的技术手段。本文将带你从零开始&#xff0c;完整复现这一过程&#xff0c;同时深入剖析其…...

从根目录到子目录:图解FatFs文件系统f_mkdir如何分配Cluster和更新目录项

从根目录到子目录&#xff1a;图解FatFs文件系统f_mkdir如何分配Cluster和更新目录项 在嵌入式系统中&#xff0c;文件系统的可靠性和效率直接影响着设备的整体性能。FatFs作为一款轻量级、兼容性强的文件系统模块&#xff0c;被广泛应用于各类嵌入式存储设备中。今天&#xff…...

FFmpeg隐藏技巧:用-acodec和af参数把手机录音变成录音棚效果(2024新版)

FFmpeg音频魔法&#xff1a;手机录音秒变专业级作品的终极指南 你是否曾经用手机录制过重要会议、灵感迸发的瞬间或是珍贵的家庭时刻&#xff0c;回放时却被背景噪音、音量不均或单薄音质破坏了体验&#xff1f;别急着投资昂贵的录音设备——你口袋里的智能手机加上FFmpeg这个开…...

从离线播报到智能交互:九联物联UMA223-H鸿蒙模组如何重塑东南亚支付云喇叭生态

1. 离线播报到智能交互的技术跃迁 记得去年在曼谷夜市买芒果糯米饭时&#xff0c;摊主那台会讲中文的收款喇叭让我印象深刻。这种看似简单的语音播报背后&#xff0c;藏着九联物联UMA223-H鸿蒙模组的硬核技术。传统收款设备就像老式收音机&#xff0c;必须联网才能"说话&q…...

拖延症福音:全场景通用AI论文工具,千笔AI VS 锐智 AI

还在为选题→大纲→初稿→文献→降重→查重→格式→答辩PPT的全流程焦头烂额&#xff1f;千笔AI以八大核心功能实现全流程一站式覆盖&#xff0c;从选题到答辩PPT生成全程护航&#xff0c;让论文写作从“耗时耗力”变成“高效规范”&#xff0c;真正实现“选题快、框架稳、修改…...

Dify异步节点稳定性攻坚实录(生产环境零宕机的5大硬核配置)

第一章&#xff1a;Dify异步节点稳定性攻坚实录&#xff08;生产环境零宕机的5大硬核配置&#xff09;在高并发、长生命周期任务密集的生产环境中&#xff0c;Dify 的异步节点&#xff08;如 LLM 调用、RAG 检索、工作流编排&#xff09;曾频繁出现超时中断、Celery worker 意外…...

新手也能上手!全领域适配的AI论文写作软件 —— 千笔写作工具

你是否也曾为论文写作而焦虑&#xff1f;选题无头绪、框架混乱、文献查找困难、查重率高、格式错误频出……这些痛点是否让你倍感压力&#xff1f;面对繁重的学术任务&#xff0c;很多同学都感到力不从心。现在&#xff0c;一款专为学生打造的AI论文写作工具——千笔AI&#xf…...

Dify私有化不是“装完就跑”!从CI/CD流水线嵌入、模型热加载监控到灰度发布控制台,构建企业级AI应用交付闭环(含Prometheus+Grafana全量看板模板)

第一章&#xff1a;Dify私有化不是“装完就跑”&#xff01;从CI/CD流水线嵌入、模型热加载监控到灰度发布控制台&#xff0c;构建企业级AI应用交付闭环&#xff08;含PrometheusGrafana全量看板模板&#xff09;Dify私有化部署绝非单次安装即可高枕无忧的静态交付——它必须深…...

7-Zip深度应用指南:从压缩原理到企业级解决方案

7-Zip深度应用指南&#xff1a;从压缩原理到企业级解决方案 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 认知篇&#xff1a;你真的了解压缩软件吗&#xff1f…...