三层测试金字塔:GenLayer Project Boilerplate中Lint、Direct、Integration如何配合?
三层测试金字塔GenLayer Project Boilerplate中Lint、Direct、Integration如何配合【免费下载链接】genlayer-project-boilerplate项目地址: https://gitcode.com/GitHub_Trending/gen/genlayer-project-boilerplateGenLayer Project Boilerplate 是一个面向 AI 原生区块链 GenLayer 的智能合约项目模板内置一个「足球竞猜」示例合约。它最大的亮点是自带一套三层测试金字塔Lint 静态检查、Direct 内存快速测试、Integration 集成测试三者速度从毫秒级到分钟级逐级递增帮助新手和普通用户在不启动 GenLayer Studio 的情况下也能快速获得开发反馈。为什么需要三层测试 这个模板里的 contracts/football_bets.py 合约很特别它会在链上直接访问网页、调用 LLM 提取比赛结果见 contracts/football_bets.py 的_check_match方法。这类AI 合约如果每次都部署到链上再测反馈太慢但完全跳过链上验证又可能漏掉共识问题。模板的解法就是用金字塔分层把问题拦截在越靠左、越便宜的层级测试层级命令速度需要 StudioLint 静态分析genvm-lint check contracts/*.py~250ms否Direct 内存测试pytest tests/direct/ -v~毫秒/测试否Integration 集成测试gltest tests/integration/ -v -s~分钟/测试是第一层Lint 静态分析部署前的体检 Lint 层完全不需要运行任何链环境一条命令即可genvm-lint check contracts/football_bets.py它能提前抓出的典型问题包括禁止的导入如os、sys、subprocess非确定性调用出现在等价原则校验块之外错误的存储类型合约必须使用TreeMap、DynArray、u256等不能用普通dict/list缺少装饰器或返回类型注解如gl.public.view、gl.public.write裸 Python 异常应使用gl.vm.UserError或Exception规则说明可参考 CLAUDE.md 的 Linting 章节。这层相当于写错语法立刻报警成本几乎为零。第二层Direct 内存测试毫秒级验证业务逻辑 ⚡Direct 模式把合约直接部署在内存里无需 GenLayer Studio也不需要真实网络和 LLM——一切外部依赖都用 mock 模拟pytest tests/direct/ -v模板中 tests/direct/ 目录按业务拆成了三组测试tests/direct/test_create_bet.py下注逻辑包括重复下注报错、多人下同一场比赛、注单 ID 小写化等边界场景tests/direct/test_resolve_bet.py结算逻辑用mock_web模拟 BBC 体育比分页、mock_llm模拟 LLM 返回 JSON 比分覆盖赢/输/平局/未结束等路径tests/direct/test_views.py只读查询方法如空状态、积分累计几个关键 mock 能力完整示例见 tests/direct/test_resolve_bet.py# 按 URL 正则 mock 网页内容 direct_vm.mock_web(r.*bbc\.com/sport/football.*, {status: 200, body: ...}) # 按 prompt 正则 mock LLM 返回 direct_vm.mock_llm(r.*Extract the match result.*, {score: 1:0, winner: 1}) # 断言合约应该报错 with direct_vm.expect_revert(Bet already created): contract.create_bet(2024-06-20, Spain, Italy, 2)由于每个测试跑在毫秒级它特别适合开发时改一行测一次的高频节奏也为 AI 编程助手Claude Code、Cursor 等提供了快速迭代闭环。第三层Integration 集成测试验证真实共识行为 Direct 模式再快也是模拟环境。Integration 层把合约真实部署到 GenLayer Studio本地 localnet 或托管 Studio走真实的共识流程包括网页访问和 LLM 调用的等价原则校验gltest tests/integration/ -v -s核心测试在 tests/integration/test_football_bets.py例如 tests/integration/test_football_bets.py 完整走通下注 → 查询 → 结算 → 积分到账全链路并用 tests/integration/fixtures.py 里预定义的期望链上状态做精确断言。测试运行网络由 gltest.config.yaml 配置默认指向本地http://127.0.0.1:4000/api改配置即可切换网络。三层如何配合一条完整工作流 官方推荐的开发节奏见 README.md 的 Testing Strategy 章节每次改完合约→ 跑 Lint拦截低级错误开发过程中→ 频繁跑 Direct 测试秒级验证业务逻辑部署上线前→ 跑一次 Integration确认真实链上共识行为正确对应到文件路径就是合约本体contracts/football_bets.py快测tests/direct/pytest执行集成测试tests/integration/gltest执行部署脚本deploy/deployScript.tsCI 自动化让前两层成为准入门槛 ✅模板自带 CI 流水线 .github/workflows/ci.yml每次提交 main 分支或发起 PR 时自动执行两个任务Lint Contracts运行genvm-lint check contracts/football_bets.pyDirect Mode Tests运行pytest tests/direct/ -v也就是说Lint 和 Direct 两层完全不需要 Studio就能在 CI 中为每一次提交把关Integration 则留给部署前手动/定时执行。快速上手三步跑通三层测试 ️# 1. 克隆项目并准备 Python 3.12 环境 git clone https://gitcode.com/GitHub_Trending/gen/genlayer-project-boilerplate cd genlayer-project-boilerplate python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt # 2. 第一层Lint 静态分析 genvm-lint check contracts/football_bets.py # 3. 第二层Direct 内存测试毫秒级无需 Studio pytest tests/direct/ -v第三层 Integration 测试需要先启动 GenLayer Studio 后运行gltest tests/integration/ -v -s详见 README.md 的 Quick Start 部分。小结 GenLayer Project Boilerplate 的三层测试金字塔给了 AI 合约开发一个清晰的反馈速度梯度Lint~250ms静态规则拦截低级错误Direct~毫秒级mock 掉网络与 LLM专注业务逻辑Integration~分钟级真实 Studio 上验证共识与外部调用从静态检查到内存快测再到链上集成每一层只解决自己那一层的问题——这正是新手学习测试分层设计的一个非常直观的开箱示例。【免费下载链接】genlayer-project-boilerplate项目地址: https://gitcode.com/GitHub_Trending/gen/genlayer-project-boilerplate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AnyPS5:PS5开放能力探针的技术本质与边界

AnyPS5:PS5开放能力探针的技术本质与边界

项目标题“AnyPS5”目前在公开网络中无权威技术文档、官方产品发布或主流科技媒体报导支撑,亦未见于索尼官方命名体系、开发者文档或PlayStation生态白皮书。作为资深从业者,我第一时间核查了PlayStation官方开发者门户(dev.playstation.com&…

2026/10/10 13:22:21 阅读更多 →
Android图形缓冲区演进:从BufferQueue到AHardwareBuffer与fence同步

Android图形缓冲区演进:从BufferQueue到AHardwareBuffer与fence同步

如果你在Android上做流畅度优化的时间够久,迟早会在systrace里撞见一个名字:图形缓冲区。Android的图形缓冲区变换,说白了就是一块承载像素数据的内存,在App绘制线程、SurfaceFlinger合成器、屏幕显示引擎之间怎么流转、怎么共享、…

2026/10/10 13:22:21 阅读更多 →
网络安全意识培训PPT制作指南:从行为目标到持续运营

网络安全意识培训PPT制作指南:从行为目标到持续运营

简介:这份《网络信息安全意识培训》PPT面向新入职员工及企业信息安全培训组织者,系统讲解信息安全的基本概念与日常防护要点,帮助零基础职场人快速建立安全意识、理解自身在信息安全体系中的责任。内容围绕四大模块展开:什么是信息…

2026/10/10 13:21:20 阅读更多 →

最新新闻

YOLOv8实战:可口可乐产品识别数据集训练与避坑指南

YOLOv8实战:可口可乐产品识别数据集训练与避坑指南

简介:这是一份面向YOLO系列算法学习者的产品识别目标检测数据集,内含5166张带标签图像,覆盖可口可乐等产品的识别场景。数据集已按训练/验证需求划分,并配备data.yaml配置文件,可直接用于yolov5、yolov8、yolov9、yolo…

2026/10/10 18:11:45 阅读更多 →
异或运算从原理到实战:位运算中的对称加减法

异或运算从原理到实战:位运算中的对称加减法

最近在网上翻到一道很经典的题:一组整数里,每个数字都出现了偶数次,只有唯一一个数字出现了奇数次,要求把它找出来。很多人第一反应是哈希表,数一遍再遍历。但如果再加一条限制,空间复杂度必须做到 O(1)&am…

2026/10/10 18:11:45 阅读更多 →
练题簿在线免费刷题:创建个人任务,把刷题、听题和模考目标放到每天的学习中

练题簿在线免费刷题:创建个人任务,把刷题、听题和模考目标放到每天的学习中

练题簿在线免费刷题:创建个人任务,把刷题、听题和模考目标放到每天的学习中选择题库、设置目标与时间,查看任务进度,再通过通知和完成记录跟进自己的复习。准备考试或复习课程时,明确今天练什么、还差多少,…

2026/10/10 18:11:45 阅读更多 →
Python实现多无人机任务分配:PSO优化与约束求解

Python实现多无人机任务分配:PSO优化与约束求解

简介:本资源是一套面向算法工程师、智能无人系统开发者及高校相关专业学生的多无人机协同任务分配实战项目,聚焦于用Python实现粒子群优化(PSO)算法解决动态任务调度难题,适用于农业巡检、应急响应、物流配送等实际场景…

2026/10/10 18:10:44 阅读更多 →
插件“消失“之谜:从缓存到市场同步,Codex 插件加载机制到底怎么工作

插件“消失“之谜:从缓存到市场同步,Codex 插件加载机制到底怎么工作

插件"消失"之谜:从缓存到市场同步,Codex 插件加载机制到底怎么工作 【免费下载链接】plugins OpenAI Plugins 项目地址: https://gitcode.com/GitHub_Trending/plugins123/plugins "打开 Codex 的插件页面,搜 Playwrig…

2026/10/10 18:09:43 阅读更多 →
全卷积网络实战:Penn-Fudan行人分割数据集解析与训练

全卷积网络实战:Penn-Fudan行人分割数据集解析与训练

简介:这份资源围绕全卷积网络(FCN)在Penn-Fudan Database上的行人检测与分割实践展开,面向具备一定深度学习基础、希望掌握像素级语义分割的开发者与研究者。内容涵盖FCN的核心原理——以卷积层替代全连接层、通过上采样与跳跃连接…

2026/10/10 18:08:43 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →