- 博客(61)
- 收藏
- 关注
原创 从零到一:5分钟上手第三方MCP服务,以12306为例
本文介绍了如何快速上手第三方MCP(Model Context Protocol)服务,以12306车票查询为例。MCP是一种标准化协议,允许AI模型无缝调用外部工具(如天气API、订票服务等),解决传统接入方式的冗余和维护成本问题。通过FastMCP框架,仅需30行代码即可创建MCP Server,并演示了本地进程通信和HTTP两种调用方式。随后以魔搭社区的12306-MCP服务为例,展示了如何集成第三方工具(如余票查询、车站搜索等),包括服务配置和代码调用。最终通过LangChain代理实现
2026-08-19 15:54:10
229
原创 接口自动化测试:JSONschema从入门到实战
JSON Schema是一种用于描述和验证JSON数据结构的规范。它通过定义字段类型、必填项、数值范围等规则,确保JSON数据的正确性和一致性。在接口自动化测试中,使用JSON Schema可以高效验证复杂的数据结构,避免冗长的断言代码。 核心功能: 数据类型验证(string/number/boolean等) 必填字段检查(required) 数值范围限制(minimum/maximum) 嵌套对象校验(properties) 通过validate()方法执行校验 优势: 相比
2026-06-14 10:00:00
219
原创 接口自动化测试:YAML 读写文件与数据管理
本文介绍了YAML配置文件的基本操作,包括读取、写入和清空。YAML相比JSON和ini更简洁易读,适合存储配置信息。通过Python的PyYAML库可实现YAML文件的安全读写:使用yaml.safe_dump写入数据避免代码注入,allow_unicode=True解决中文乱码;yaml.safe_load读取数据返回字典格式;truncate()方法清空文件内容。文章提供了完整的代码示例,涵盖YAML文件的基础操作流程。
2026-06-13 13:38:06
180
原创 接口自动化测试:一文搞懂 Pytest 自动化测试框架
文章摘要 Pytest是一个基于Python的开源测试框架,专为自动化测试设计。相比直接运行Python代码,Pytest能自动识别测试用例,无需手动编写main函数,并提供批量执行、结果断言、测试报告等功能。它解决了传统测试方法中的诸多痛点:无法自动判断结果正确性、难以批量执行测试、缺乏测试报告、测试数据管理困难以及测试环境复用问题。Pytest通过特定的命名规则(如test_前缀)自动发现用例,支持参数化和Fixture机制,并通过命令行参数(如-sv)提供丰富的测试输出信息,显著提升测试效率和可维护性
2026-06-07 14:41:32
876
原创 接口自动化测试:Python Requests 入门
Requests库在接口自动化测试中的应用 本文介绍了Python中强大的HTTP请求库Requests及其在接口自动化测试中的关键作用。Requests作为"为人类设计的HTTP库",能够轻松实现各种HTTP请求操作,包括GET/POST请求、表单提交、JSON数据处理等。 文章重点讲解了: Requests的安装与基本使用 Response对象的核心属性和方法 常见HTTP请求方法 请求头、参数等信息的添加方式 通过实际代码示例,展示了如何利用Requests发送接口请求、获取响应数据并进行结果验证,强
2026-05-31 17:43:40
311
原创 Charles 基础使用教程
安装移动端证书,打开 Charles,在 Charles 的菜单栏上点击 Hellp-> SSL proxying -> install charles Root Certificate on a mobile device or remote browser,弹出提示框,上面有代理的IP与端口,以及下载证书的地址,点击。打开 Charles,查看本机代理端口,在 Charles 的菜单栏上点击 Proxy ->Proxy Settings,在 HTTP Proxy 框内设置端口号,注意勾选。
2026-05-25 12:47:58
894
原创 Python 修仙修炼录 10:模块借道,引先贤修为为己用
本文总结了Python库的使用方法,分为标准库和第三方库两大类。标准库自带于Python中,可通过三种方式导入模块;第三方库需用pip安装。文章通过实例演示了标准库datetime和os.walk的用法,以及第三方库qrcode和xlrd的应用场景。使用库能提高开发效率,避免重复造轮子。标准库适合基础功能,第三方库则提供更丰富的扩展功能。掌握库的使用是Python进阶的重要一步。
2026-05-24 00:12:39
403
原创 Python 修仙修炼录 09:文件道藏,存取修行印记
本文系统介绍了Python文件操作的核心知识,包括文件路径概念、打开关闭文件的方法、读写操作技巧以及上下文管理器的使用。重点讲解了文件路径分隔符的选择、三种打开模式(r/w/a)的区别、文件关闭的必要性、写入和读取的多种方式,以及使用with语句自动管理文件资源的优势。文章强调文件操作必须遵循"打开-操作-关闭"的流程,并提供了避免资源泄露的实用解决方案,是Python文件处理的完整指南。
2026-05-23 20:00:13
414
原创 Python 修仙修炼录 08:字典秘境,参悟键值玄机
本文介绍了Python字典的基本操作和使用方法。主要内容包括:字典的创建(空字典和带初始值字典)、查找key(in/not in运算符和[]访问)、新增/修改键值对、删除键值对(pop方法)以及遍历字典(直接遍历、keys()、values()、items()方法)。最后说明了合法的key类型必须可哈希,不可变对象才能作为字典的key。字典通过哈希表实现,具有高效的增删改查特性,但遍历效率稍低。
2026-05-19 22:47:23
363
原创 Python 修仙修炼录 07:列表灵囊,收纳万千数据
本文详细对比了Python中列表(List)和元组(Tuple)的核心区别与用法。关键区别在于列表是可变的(支持增删改),而元组是不可变的(创建后不能修改)。列表使用方括号[],元组使用圆括号()。文章全面介绍了列表的创建、访问、修改、切片、遍历、增删查等操作,以及元组的只读特性和特殊用途。特别指出元组在代码安全和哈希特性方面的优势,解释了为什么需要同时存在这两种数据结构。最后通过表格总结了二者的主要差异,帮助开发者根据具体场景选择合适的数据结构。
2026-05-17 22:07:38
405
原创 Python 修仙修炼录 06:函数本命技,自创修行功法
本文介绍了Python函数的基础知识,包括定义与调用、参数传递、返回值、变量作用域、执行流程和递归。主要内容包括:1)函数定义使用def关键字,遵循先定义后调用原则;2)参数传递支持动态类型、默认值和关键字传参;3)返回值可通过return语句返回单个或多个值;4)变量作用域分为局部变量和全局变量;5)函数执行时会跳转到函数体执行;6)递归函数需要终止条件避免无限调用。Python函数具有灵活的参数传递和返回值机制,支持多种编程范式。
2026-05-16 16:19:11
372
原创 Python 修仙修炼录 05:循环神通,省去无用苦修
在 Java 中 for(初始化循环变量;简单来说就是我们可以使用模块,也就是别人写好的,我们直接拿来使用。在python中,如果想引入其他模块,需要先使用。有些操作是需要反复执行的. 这种就需要使用循环.,里面可以存放函数、类、变量,也能写可执行代码。这个可迭代对象中就包含了一系列的整数.示例:打印 2, 4, 6, 8, 10。示例:打印 1 - 10 整数。示例:打印 1 - 10 整数。示例:假设我要吃 5 个包子。示例:假设我要吃 5 个包子。.起到的效果就是得到一个。示例:想要一个随机数。
2026-05-14 10:51:58
199
原创 Python 修仙修炼录 04:分支悟道,掌控抉择逻辑
虽然希望条件满足的时候,啥都不做,但是由于Python对于语法格式尤其是缩进和代码块要求较高,所以如果啥都不写(只写个注释)是不符合语法要求的~,相当于是 if a==‘1’ 条件内部的代码块.两个条件即使都不满足,也能打印 ccc ,因为打印 ccc 的语句,,相当于是 ifb==‘2’ 条件内部的代码块.第一个条件满足,就会打印 bbb ,因为打印 bbb 的语句只有。需要跟上代码块的部分,都是需要使用缩进来表示的.在 Java 中对于代码缩进是没有强制要求的,具体怎么写的不好影响代码的编译运行结果。
2026-05-14 09:13:19
341
原创 Python 修仙修炼录 03:运算符心法,参悟演算大道
来比较字符串内容相同,而Java不可以,得使用 equals方法,如果直接使用==本质上在比较这两个字符串是否是同一个对象.注意 Python 中支持这种连续小于的写法.判定a-b既是<0.000001又是大于-0.000001,而 Java 是不可以的。虽然这两个数字已经非常非常接近了,但是如果直接使用==进行比较,仍然会出现False的情况!示例:把10 赋值给a 把20 赋值给b 可以利用这个实现值交换 a,b=b,a。示例:先把20赋值给b 在把b赋值给a a = 20 b = 20。
2026-05-11 09:12:12
378
原创 Python 修仙修炼录 02:变量筑基,筑牢编程道基
变量名 = 值在 python 中不用声明类型,直接赋值就是定义变量a = 20# 批量定义# 一行多个# 同值赋值首次使用 = 对 a 进行设置值,这个过程是创建变量(初始化)
2026-05-08 10:06:57
385
原创 爆肝 5 万字!Git 从零基础到大神,这篇直接封神
这就需要我们去解决冲突,但是我们⽆法保证对于冲突问题可以正确地⼀次性解决掉,因为在实际的项⽬中,代码冲突不只⼀两⾏那么简单,有可能⼏⼗上百⾏,甚⾄更多,解决的过程中难免⼿误出错,导致错误的代码被合并到此时的状态为master 上。⽐如你新增了⼀⾏,这就是⼀个修改,删除了⼀⾏,也是⼀个修改,更改了某些字符,也是⼀个修改,删了⼀些⼜加了⼀些,也是⼀个修改,甚⾄创建⼀个新⽂件,也算⼀个修改。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了。
2026-03-19 22:38:11
790
8
原创 软件测试入门复习笔记:测试分类篇
• ⽩盒测试主要应⽤于单元测试阶段• 先执⾏静态设计⽤例的⽅法,再执⾏动态设计测试⽤例的⽅法• 设计⽤例⼀般使⽤路径测试,重点模块追加使⽤逻辑覆盖⽅法。
2026-03-13 17:03:08
500
原创 软件测试入门复习笔记:一套吃透测试用例设计篇
不说平时不常见的,就拿电饭煲来说,让你写20个测试用例,可能就会汗流浃背,不说能不能覆盖出,还容易发生重复等陷入漩涡,所以说往往通过头脑风暴能够想出来的⽤例是寥寥⽆⼏的,我们设计测试⽤例的时候需要有思路的去设计,这个思路就是万能公式。L下⻆的数字“4”表⽰有4横⾏,简称⾏,即要做四次试验;依据需求将输⼊(特殊情况下会考虑输出)划分为若⼲个等价类,从等价类中选出⼀个测试⽤例,如果这个测试⽤例测试通过,则认为所代表的等价类测试通过,这样就可以⽤较少的测试⽤例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
2026-03-12 18:24:45
526
原创 软件测试入门复习笔记:认识测试
首先什么是测试,拿生活中的例子来讲,就好比你在炒着一盆菜,不知道咸不行咸,只有去尝一口才知道,这就是测试。那软件测试呢,你代码写完不知道能不能运行,只有跑一下对不对才知道,这就是软件测试。这些都是测试,所以测试在生活中处处可⻅软件测试就是验证软件产品特性是否满⾜⽤⼾的需求。
2026-03-10 16:31:38
274
原创 Java 接口详解:语法、特性、常见接口与面试高频考点
接⼝的定义格式与定义类的格式基本相同,将class关键字换成interface关键字,就定义了⼀个接⼝public interface 接口名 {// 常量(默认 public static final)// 抽象方法(默认 public abstract)接⼝中每⼀个⽅法都是public的抽象⽅法,即接⼝中的⽅法会被隐式的指定为(只能是,其他修饰符都会报错)// 等价于 public abstract void run();void run();
2026-03-08 12:41:07
447
1
原创 Java 抽象类详解:语法、特性与面试高频考点
用abstract关键字声明不能创建对象(不能 new抽象⽅法不能是private抽象⽅法不能被final和static修饰可以包含:普通成员变量普通方法(有实现)抽象方法(没有方法体,只有声明)子类必须重写所有抽象方法,否则子类也必须变成抽象类抽象类存在的最大意义就是为了被继承,抽象类本身不能被实例化,要想使用,只能创建该抽象类的子类.然后让子类重写抽象类中的抽象方法。
2026-03-07 16:28:19
293
原创 Java String 全解析:从底层存储到高效使用
也可以使用compareTo ⽅法,与equals不同的是,equals返回的是boolean类型,⽽compareTo返回的是int类型。在 Java 语言中,字符串的使用非常广泛、频率极高,因此 Java 专门提供了 String 类 来对字符串进行统一的创建、管理和操作。String类重写了⽗类Object中equals⽅法,Object中equals默认按照==⽐较,String重写equals⽅法。为此Java 专门为字符串开辟的一块内存区域,为字符串常量池,equals ⽅法:按照字典序⽐较。
2026-03-07 13:11:19
397
原创 Java 异常处理机制,一篇全搞定
简单来说,就是为了当程序发生异常时,可以按照代码预先设定好的异常逻辑,来针对性地处理异常,让程序尽大可能的恢复正常并继续执行,且保持代码的清晰。所以如果说finally里面有return,那么就会执⾏finally中的return,从⽽不会执⾏到try中原有的return。不论程序是否发⽣异常,都需要执⾏,,因为异常会引发程序的跳转,可能导致有些语句执⾏不到,finally就是⽤来解决这个问题的。简单来说,throw、throws都是遇到问题不进行具体处理,而是继续抛给调用者,不进行处理就会报错程序停止。
2026-03-05 20:37:10
390
原创 LuckyDraw抽奖系统测试报告
这是一个基于 Spring Boot 框架构建的企业级抽奖系统。系统集成了 MyBatis 进行数据持久化,Redis 进行缓存与分布式锁,RabbitMQ 处理高并发下的异步抽奖业务,并包含完善的用户体系、活动/奖品管理以及中奖记录模块等核心抽奖功能,由本人独立完成设计、开发、测试及云服务器部署的全流程工作二、项目模块及实现功能⼈员业务模块管理员注册管理员手机号密码登录管理员邮箱验证码登录普通用户创建奖品业务模块奖品创建奖品列表展示活动业务模块活动创建活动列
2026-02-26 15:46:20
940
原创 ideaPool论坛系统测试报告
用户系统: 支持用户注册、登录(Session 管理)、信息修改、头像上传。文章管理回复系统: 支持对文章进行回复、查看回复列表。板块管理: 支持多板块分类展示。站内信: 支持用户之间发送私信、查看未读消息。本次对ideaPool用户注册 / 登录、文章管理、回复互动、板块分类、站内信、个人中心等。本次测试共设计并执行测试用例163个,覆盖功能测试、自动化测试、接口测试、性能测试、兼容性测试、安全测试、网络异常测试等多种测试类型,执行测试覆盖率97%,全面验证系统在正常、异常、并发、多环境下。
2026-02-12 16:53:08
1372
2
原创 告别只会功能测试!JMeter 接口性能测试全套实操,看完直接上手
实际上性能测试是一个很大的概念,从测试范围与对象来看,性能测试可细分为多种类型,包括系统级性能测试(验证整个系统的端到端性能)、服务器性能测试(聚焦服务器硬件与系统软件的承载能力)、数据库性能测试(验证数据库的查询与写入性能),以及本文的核心——性能接口测试对于一些企业来说,也会招聘专业的性能测试人员,当然功能测试人员也需要具备一定的性能测试能力,所以本篇针对功能测试人员:能够对个人编写的项目进行接口的性能测试Apache JMeter 是一款开源免费的纯 Java 测试工具,主打。
2025-12-28 10:45:41
1148
原创 吊打 Web 自动化测试!一篇吃透 Selenium 元素定位 + 核心函数,新手直接上手
通过概念篇,你一定理解了web自动化示例怎么就能按照你的代码执行自动化,但是又可能又会带有新的好奇,一个web网页界面这么多元素,它是怎么找到的,还有好几个如等方法中,怎么有些出现了奇怪的字符串,它又是用来干什么的,它们作业又是什么?别慌,这些东西只是涉及到元素的定位和⾃动化测试常⽤函数内容,今天这篇文章就来让你来更深刻的掌握自动化测试,保证你看完后,直接可以上手项目测试。
2025-12-27 09:45:22
1297
原创 吊打 Web 自动化基础!一篇吃透核心概念,告别懵圈式学习
在生活里,如果你不懂英文,去国外餐厅点餐时,就需要一个翻译官——你把“要一份牛排”的需求告诉翻译官,翻译官再用英文传达给服务员,服务员做好餐后,翻译官又把“餐品已备好”的信息反馈给你,翻译官就是驱动。在电脑里各种设备要和你进行通信,也需要驱动程序,驱动就好似沟通的桥梁所以程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver以本地化⽅式驱动浏览器。
2025-12-25 14:41:13
994
原创 Spring 开发小白学习过程中常用通用配置文件,即拿即用!(持续更新中)
是适配 Spring Boot 3.x 生态的版本(基于 Jakarta EE 规范,替代原 Java EE),核心是在 MyBatis 基础上做无侵入增强,大幅简化 CRUD 开发。:指定 Spring Boot 日志的输出文件名称,默认生成在项目根目录下(也可指定绝对路径,如 name: /logs/spring-blog.log)。注意:数据库登录账号 / 密码,示例为本地默认的 root/123456,生产环境需替换为安全的账号密码。java_blog_spring:要连接的数据库名。
2025-12-13 15:23:13
951
3
原创 Spring 后端安全双剑(下篇):JWT 无状态认证 + 密码加盐加密实战
核心特性单向哈希运算,将任意长度数据转换为固定长度的 “摘要值”;无法从摘要反推原文,数据微小变化会导致摘要完全不同。子类型MD(Message Digest):消息摘要算法(如 MD5)。SHA-1(Secure Hash Algorithm):安全散列算法。MAC(Message Authentication Code):消息认证码算法。适用场景:数据完整性验证、密码存储(存摘要而非明文)、数字签名组件。
2025-12-11 17:18:51
948
3
原创 Spring 后端安全双剑(上篇):JWT 无状态认证 + 密码加盐加密实战
令牌(Token)的本质:是服务端颁发给客户端的 “临时身份凭证”,本质是一段经过加密的字符串,包含用户身份、权限、过期时间等核心信息,服务器具备⽣成令牌和验证令牌的能⼒你可以把它理解为:用户登录成功后,服务端给的一张 “电子通行证”—— 后续客户端访问需要权限的接口时,只需出示这张 “通行证”,服务端验证通过就允许访问,无需再重复验证用户名密码⽤⼾登录 ⽤⼾登录请求,经过负载均衡,把请求转给了第⼀台服务器,第⼀台服务器进⾏账号密码验证,验证成功后,⽣成⼀个令牌,并返回给客⼾端。
2025-12-11 15:46:38
966
原创 Spring Boot 实战(一):拦截器 + 统一数据返回 + 统一异常处理,一站式搞定接口通用逻辑
拦截器是 SpringMVC 的核心组件,能在请求生命周期的关键节点执行自定义逻辑,常用于登录校验、接口访问日志、权限控制、参数校验等场景也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以在⽤⼾请求前阻⽌其执⾏.在拦截器当中,开发⼈员可以在应⽤程序中做⼀些通⽤性的操作,⽐如通过拦截器来拦截前端发来的请求,判断Session中是否有登录⽤⼾的信息.如果有就可以放⾏,如果没有就进⾏拦截实现HandlerInterceptor接⼝,并重写其所有⽅法@Slf4j@Component。
2025-12-04 15:58:56
860
原创 手把手教你 MyBatis 起飞(一):MyBatis动态SQL + 6大核心标签 + 实战避坑
动态 SQL 是指在程序运行时根据条件动态拼接、生成的 SQL 语句,而非硬编码在代码中的固定语句,就例如用户可自主选择查询表中的姓名、密码、年龄等字段的任意组合(仅查姓名,或同时查姓名与年龄,或全查),也可仅拼接输入的有效筛选条件,让 SQL 语句更贴合实际使用需求。
2025-11-29 16:51:39
678
原创 手把手教你 MyBatis 入门(二):#{} 和 ${} 的区别、用法及 SQL 注入防范(附代码案例)
不知道大家有没有好奇,之前在Mybatis的基础入门文章中,一直在用到 ,且使用的好好的,怎么突然出现了,其实在 MyBatis 参数赋值有两种⽅式,就是二者中其中的一种,只不过这两种赋值的方式有些较大的区别,参数解析机制完全不同,所以在使用过程中,针对不同的目的,用不同参数赋值方式首先分别用 #{} 和 ${} 接收不同类型的参数,来观察两者的区别#{}Mapper接⼝:测试代码:执⾏结果:Mapper接⼝:测试代码:执⾏结果:好像都可以执行成功,感觉是没什么差别,但是细心的你肯定观
2025-11-27 15:03:55
934
原创 手把手教你 MyBatis 入门:环境搭建 + 参数传递 + CRUD+ 多表查询实战
从上述代码和操作流程可以看出,对于JDBC来说,整个操作⾮常的繁琐,我们不但要拼接每⼀个参数,⽽且还要按照模板代码的⽅式,⼀步步的操作数据库,并且在每次操作完,还要⼿动关闭连接等,⽽所有的这些操作步骤都需要在每个⽅法中重复书写.那有没有⼀种⽅法,可以更简单、更⽅便的操作数据库呢?答案是肯定有的,那就是。在 MyBatis 中,param1、param2 是 无 @Param 注解时,多个单个参数的默认别名—— 本质是 MyBatis 为了避免参数名丢失后无法引用,给参数按。
2025-11-25 13:02:32
849
1
原创 一文搞懂 SpringBoot 配置文件:properties vs yml 全攻略
SpringBoot 虽然它已经帮我们预设了很多默认值(比如默认端口 8080),但实际开发中,“默认值” 很难满足所有需求,在加上 SpringBoot ⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的。properties 是 SpringBoot 最早支持的配置格式,也是创建SpringBoot项⽬默认的配置⽂件。配置⽂件也可以配置list集合,集合的读取和对象⼀样,也是使⽤。如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤。
2025-11-20 16:25:38
762
1
原创 Spring DI 入门详解:三种依赖注入方式 +@Autowired 歧义问题解决
DI(Dependency Injection)直译为“依赖注入”,依赖注⼊是⼀个过程,是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源,⽽资源指的就是对象没有 DI:你得自己买原料、煮茶、做奶盖(自己创建依赖)有 DI:你直接点外卖,奶茶店(IOC容器)做好奶茶(依赖)送到你手上(注入)简单来说,就是把对象取出来放到某个类的属性中结合上篇的IOC文章,我们可以对IOC是 Spring 的核心思想,DI是其具体实现手段这句话应该会有了更深的理解,也就是。
2025-11-18 18:13:09
728
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅