三层测试金字塔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),仅供参考