尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
把 Cosmic Ray 变异测试接入 CI:GitHub Actions 工作流 + cr-badge 存活率徽章完整指南
把 Cosmic Ray 变异测试接入 CIGitHub Actions 工作流 cr-badge 存活率徽章完整指南【免费下载链接】cosmic-rayMutation testing for Python项目地址: https://gitcode.com/gh_mirrors/co/cosmic-rayCosmic Ray是一款面向 Python 3 的**变异测试mutation testing**工具它会对你的源码做微小的改动生成变异体然后逐一运行测试套件看有多少变异体能被你的测试杀死。本文手把手教你把 Cosmic Ray 接入 CI用 GitHub Actions 在每次 PR 自动跑变异测试并生成cr-badge存活率徽章展示在仓库里。变异测试与存活率徽章30 秒建立概念变异体mutant工具修改一行代码后产生的带 bug版本比如把改成、删掉return后面的语句。杀死 / 存活跑测试时若用例失败变异体被杀死若测试全过说明测试没覆盖到这条路径——这是存活变异体。存活率与击杀率存活率 存活变异体占比而cr-badge徽章显示的是100% − 存活率也就是变异击杀率见徽章工具源码 src/cosmic_ray/tools/badge.py 中percent 100 - survival_rate(db)。阈值配色可在配置中设置分数线例如低于 50 标红、70 标橙、100 标黄、101 标绿。️ 一句话徽章上的百分比越高说明你的测试对代码改动的免疫能力越强。快速上手本地跑通一次变异测试会话安装工具支持 Python 3.9pip install cosmic-ray准备一份 TOML 配置声明被测模块与测试命令可参考项目自带示例 docs/source/tutorials/intro/tutorial.toml.1[cosmic-ray] module-path mod.py timeout 10.0 test-command python -m unittest test_mod.py [cosmic-ray.distributor] name local示例中被测模块与测试文件分别为 docs/source/tutorials/intro/mod.1.py 和 docs/source/tutorials/intro/test_mod.1.py。distributor选择local时直接在本地执行无需额外服务最适合 CI。初始化会话并执行cosmic-ray init tutorial.toml session.sqlite cosmic-ray exec session.sqlite执行完可以用cr-report session.sqlite查看汇总报告加--show-diff --surviving-only可只看存活变异体的具体改动。GitHub Actions 工作流让变异测试在每次 PR 自动运行Cosmic Ray 项目自身就用 GitHub Actions 做 CI工作流.github/workflows/run-tests.yml在每次 push 和 PR 时用uv按 Python 3.9–3.13 版本矩阵跑 lint 与测试详见 docs/source/reference/continuous_integration.rst。你可以照着写一个变异测试专用工作流放在.github/workflows/cosmic-ray.ymlname: Mutation testing on: pull_request: branches: [main] workflow_dispatch: jobs: cosmic-ray: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: actions/setup-pythonv5 with: python-version: 3.12 - name: 安装依赖与 Cosmic Ray run: pip install cosmic-ray -r requirements.txt - name: 初始化变异测试会话 run: cosmic-ray init cosmic-ray.toml session.sqlite - name: 执行变异测试 run: cosmic-ray exec session.sqlite - name: 生成存活率徽章 run: cr-badge cosmic-ray.toml .github/mutation-badge.svg session.sqlite - name: 上传徽章与 XML 报告 uses: actions/upload-artifactv4 with: name: mutation-results path: | .github/mutation-badge.svg session.xml 两个小建议变异测试比普通测试慢得多PR 上可用workflow_dispatch手动触发或改为每周定时跑一次PR 只跑快速测试用cr-xml把结果导出为 XMLcr-xml cosmic-ray.toml session.xml session.sqlite方便接入支持变异覆盖率的报告系统。cr-badge 徽章配置颜色阈值与显示格式cr-badge的完整用法来自 docs/source/reference/badge.rstcr-badge [CONFIG_FILE] badge_file session-file在配置文件里加入徽章段即可自定义标签、格式与配色阈值[cosmic-ray.badge] label mutation format %.2f %% [cosmic-ray.badge.thresholds] 50 red 70 orange 100 yellow 101 green徽章基于 anybadge 生成产出的.svg文件可作为工作流 artifact 下载或复制到仓库固定路径后在 README 中引用实现仓库首页一眼看到变异测试健康度的效果。实用清单接入 CI 后怎么用好它先看存活变异体cr-report session.sqlite --show-diff --surviving-only逐个判断是补测试还是确认无害相关工具见 src/cosmic_ray/tools/report.py。缩小变异范围在配置中用excluded-modules排除无关模块或配合过滤器src/cosmic_ray/tools/filters/ 支持按行、按算子、按 pragma 注释过滤显著缩短 CI 时间。关注算子覆盖Cosmic Ray 内置十余种变异算子二元/一元/比较运算替换、布尔值替换、数字替换、变量插入/替换等源码位于 src/cosmic_ray/operators/配置里可控制启用的算子集合。徽章别当覆盖率用击杀率高 ≠ 覆盖全它衡量的是测试能否发现这类改动两者要结合看。关键文件速查内容路径项目 CI 工作流示例.github/workflows/run-tests.yml教程配置/被测模块/测试docs/source/tutorials/intro/徽章命令与配置文档docs/source/reference/badge.rst命令速查init/exec/cr-report/cr-badge/cr-xmldocs/source/reference/cli.rst徽章生成源码src/cosmic_ray/tools/badge.py存活率计算源码src/cosmic_ray/tools/survival_rate.py变异算子实现src/cosmic_ray/operators/✅ 至此你已拥有一次 PR 触发的自动化变异测试 一个随测试质量变色的存活率徽章。下一步建议把cr-xml报告也纳入归档方便对比每个版本的变异击杀率变化。【免费下载链接】cosmic-rayMutation testing for Python项目地址: https://gitcode.com/gh_mirrors/co/cosmic-ray创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

nest-router被NestJS 8收入核心后如何迁移?内置RouterModule平滑过渡指南

nest-router被NestJS 8收入核心后如何迁移?内置RouterModule平滑过渡指南

nest-router被NestJS 8收入核心后如何迁移?内置RouterModule平滑过渡指南 【免费下载链接】nest-router Router Module For Nestjs Framework 🚦 🚀 项目地址: https://gitcode.com/gh_mirrors/ne/nest-router NestJS 8 已把社区路由模块 nest-r…

📅 2026/10/5 9:07:46
SWE Agent工具系统详解:tree-sitter代码解析与代码库搜索如何给AI装上“代码雷达“

SWE Agent工具系统详解:tree-sitter代码解析与代码库搜索如何给AI装上“代码雷达“

SWE Agent工具系统详解:tree-sitter代码解析与代码库搜索如何给AI装上"代码雷达" 【免费下载链接】swe-agent 🤖 AI-powered software engineering multi-agent system with researcher and developer agents that automate code implementati…

📅 2026/10/6 19:37:55
modbus-esp8266 API终极速查表:readHreg、writeCoil、push/pull一览无余

modbus-esp8266 API终极速查表:readHreg、writeCoil、push/pull一览无余

modbus-esp8266 API终极速查表:readHreg、writeCoil、push/pull一览无余 【免费下载链接】modbus-esp8266 Most complete Modbus library for Arduino. A library that allows your Arduino board to communicate via Modbus protocol, acting as a master, slave o…

📅 2026/9/21 20:59:58
MORE NEWS

更多资讯

📰

滕州报名电工证外省证能转吗 上岗必备全流程解析

滕州报名电工证外省证能转吗 上岗必备全流程解析 之前考的证在外省能不能转过来?这是很多在外地打工、回老家发展的电工从业者最关心的问题。尤其是在滕州这样的工业城市,电工证作为 上岗必备…

📰

安庆去哪里办电工证?真实经历告诉你怎么避坑

安庆去哪里办电工证?真实经历告诉你怎么避坑 你是不是也像我一样,一开始听说要办电工证就懵了?不知道安庆去哪里办电工证,更怕自己被中介坑了钱还拿不到证?别急,听我这个在三门峡房建工程干了五年的老电工跟你唠唠,怎么从零开始搞定电工证。…

📰

锡林浩特电工证办理官方回应:过期了不知道怎么复审延期?这样操作就对了

锡林浩特电工证办理官方回应:过期了不知道怎么复审延期?这样操作就对了 证书过期了不知道怎么复审延期?别急,官方回应来了!很多持证人发现,特种作业操作证的有效期只有三年,到期不复审就等于“废纸一张”,不仅影响工作,还可能面临法律风险。特别是在…

📰

高级维修电工证是强电报名条件和考试时间,官方报名入口你知道吗

高级维修电工证是强电报名条件和考试时间,官方报名入口你知道吗 实操考试心里没底怕挂科?很多准备考高级维修电工证的小伙伴都遇到过这个问题。尤其是像我们濮阳的应届工程类毕业生,一想到要面对高压设备和复杂的电路系统,就紧张得不行。其实,只要掌握好…

📰

高压电工作业实操教案在哪考?新乡建筑工人都在问的实操攻略

高压电工作业实操教案在哪考?新乡建筑工人都在问的实操攻略 你是不是正在为 高压电工作业实操教案在哪考 发愁?别急,今天这波干货,全是来自一线的实战经验,帮你解决“ 急需特种作业证才能上岗找工作 ”这个燃眉之急。…

📰

低压电工证在那里复审千万别踩坑 信阳劳务班组负责人实操经验分享

低压电工证在那里复审千万别踩坑 信阳劳务班组负责人实操经验分享 实操考试心里没底怕挂科?低压电工证在那里复审?别急,你不是一个人。作为信阳本地劳务班组的负责人,我带过几十个电工考证、复审、换证,也踩过不少坑,尤其是低压电工证复审这块儿,流程…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬