新闻详情

新闻详情

首页 / 资讯中心 / 详情

LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码

发布时间:2026/9/13 8:56:54来源:尧图网络
LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码
LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码【免费下载链接】nuclei-templatesCommunity curated list of templates for the nuclei engine to find security vulnerabilities.项目地址: https://gitcode.com/GitHub_Trending/nu/nuclei-templatesCI 日志满屏 32m 转义序列、命令失败但测试显示通过,是 Symfony 命令行功能测试的两个高发事故。LiipFunctionalTestBundle 的 runCommand() 把内核启动、执行与捕获收进一次调用,并暴露装饰、详细级别、输入模拟三个控制点,分别对应这些现场。面向有 PHP 与 Symfony 基础、没接过这个库的开发者,下文按翻车现象逐个给出控制点与配置位置。runCommand() 实际做的事:启动或复用内核,取出指定命令,交给 CommandTester 执行,再返回 tester 供断言。这样设计是为了让测试类里不再出现手工组装 Application 的样板代码。跑通 runCommand 并复用内核手工 new Application($kernel) 再 execute(),样板又多、内核又反复冷启动。继承库的 WebTestCase 后,runCommand() 一行走通;第三个参数传 true,同一测试内多次调用可复用内核。最小可运行的测试类长这样,退出码断言留到后面单独补:use Liip\FunctionalTestBundle\Test\WebTestCase; final class ExportCommandTest extends WebTestCase { public function testExport(): void { $tester $this-runCommand(app:export, [--limit 50]); $this-assertStringContainsString(50 rows written, $tester-getDisplay()); } }让输出可控:装饰与详细级别本地终端颜色正常,CI 纯文本日志里却满屏 32m 转义序列;关键日志又只在 -vvv 下才打印,断言匹配不到也不知道卡在哪。这两个问题共用一组配置键,定义在 [配置节点,默认分别为 true 与 normal。全局:配置两个键在 test 环境的包配置里一次写死,装饰控制是否输出 ANSI 码,详细级别决定 Console 打印到哪个通道:liip_functional_test: command_decoration: false command_verbosity: debug⚠️ command_verbosity 只接受五个合法值,拼错会在 getVerbosityLevel() 处抛 OutOfBoundsException,示例测试 里有断言这条异常的用例。配置值对应常量输出范围quietVERBOSITY_QUIET静默normalVERBOSITY_NORMAL常规信息verboseVERBOSITY_VERBOSE追加 -v 说明very_verboseVERBOSITY_VERY_VERBOSE追加 -vv 日志debugVERBOSITY_DEBUG追加 -vvv 细节单测:逐条覆盖个别测试想临时改行为时,用公开方法覆盖全局值,两者都定义在 核心实现:public function testRetryLogVisible(): void { $this-isDecorated(false); $this-setVerbosityLevel(debug); $tester $this-runCommand(app:export); $this-assertStringContainsString(debug: retry host, $tester-getDisplay()); }断言退出码与输出命令抛错、退出码非零,但输出恰好含断言词时测试照样变绿。退出码才是权威信号,两层一起断言,官方文档 也建议同时校验:$tester $this-runCommand(app:export, [--limit 50]); $this-assertSame(0, $tester-getStatusCode()); $this-assertStringContainsString(50 rows written, $tester-getDisplay());模拟交互式命令输入带确认提示的命令不喂输入就走默认分支。setInputs() 按提示顺序填回答,调用后 runCommand() 自动打开交互模式;否则 CommandTester 默认非交互,交互分支不会执行。下面这个用例模拟用户输入 no,验证清理未执行:public function testPurgeRefused(): void { $this-setInputs([no]); $tester $this-runCommand(app:cache:purge); $this-assertStringNotContainsString(Purged, $tester-getDisplay()); } 输入在首次执行后清空,第二次调用回到默认行为,正好用来测第二次不再询问的场景。排错速查表现象原因处理匹配不到 -v 才打印的文案级别停留在 normal配置 command_verbosity 或 setVerbosityLevel抛 OutOfBoundsExceptionverbosity 值拼错对照 quiet / normal / verbose / very_verbose / debug日志出现 [32m 转义序列装饰器未关command_decoration: false 或 isDecorated(false)交互命令走错分支未提供输入或非交互setInputs() 按提示顺序填值测试绿但命令实际失败只断言了输出补 getStatusCode() 断言【免费下载链接】nuclei-templatesCommunity curated list of templates for the nuclei engine to find security vulnerabilities.项目地址: https://gitcode.com/GitHub_Trending/nu/nuclei-templates创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

深入 Loki 的模糊匹配依赖:sahilm/fuzzy 库的 API、打分算法与仓库内实际应用 2026/9/13 9:35:58

深入 Loki 的模糊匹配依赖:sahilm/fuzzy 库的 API、打分算法与仓库内实际应用

深入 Loki 的模糊匹配依赖:sahilm/fuzzy 库的 API、打分算法与仓库内实际应用 【免费下载链接】loki Like Prometheus, but for logs. 项目地址: https://gitcode.com/GitHub_Trending/lok/loki 本篇基于 Loki 仓库中 vendor 的 sahilm/fuzzy 库 README 及其…

阅读更多 →
Pi Agent SDK极简架构与OpenClaw性能优势解析 2026/9/13 9:35:58

Pi Agent SDK极简架构与OpenClaw性能优势解析

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

阅读更多 →
AI内容生成技术:从原理到产业落地 2026/9/13 9:35:58

AI内容生成技术:从原理到产业落地

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

阅读更多 →
微信小程序停车场管理系统:扫码即停即走全链路实现 2026/9/13 9:35:58

微信小程序停车场管理系统:扫码即停即走全链路实现

简介:这是一套面向计算机专业本科生及微信小程序初学者的高分毕业设计实战项目,聚焦停车场管理场景,完整实现车位查询、预约、缴费、管理员后台等核心功能,可直接用于毕业设计、课程设计或期末大作业。资源包共390个文件&#xff…

阅读更多 →
西门子S7-1500 PLC在汽车电子装配线的应用实践 2026/9/13 9:35:58

西门子S7-1500 PLC在汽车电子装配线的应用实践

1. 项目概述:汽车电子零件装配线自动化控制系统这套基于西门子S7-1500 PLC的汽车电子装配线控制系统,是我去年参与实施的一个典型工业自动化项目。整套系统包含6台伺服驱动的机械臂、4个工位的阿特拉斯拧紧枪工作站、2台压力精度要求0.5Bar的液压压机&am…

阅读更多 →
用Python可视化伯努利原理:流速与压强的动态能量守恒 2026/9/13 9:32:58

用Python可视化伯努利原理:流速与压强的动态能量守恒

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞