在Jenkins中使用behave+allure时如何查看执行过程的控制台输出日志?
问题原因
你当前的behave命令仅指定了AllureFormatter一个格式化器,所有执行输出都会被定向到allure-results目录存储为报告源文件,不会向标准输出流打印日志,因此Jenkins控制台看不到执行过程。
解决方法
你可以通过同时指定多个格式化器的方式,在生成Allure报告源文件的同时,向控制台输出执行日志:
方式1:输出完整的格式化执行日志
使用behave默认的pretty格式化器输出完整用例步骤、执行状态、运行日志到控制台,命令修改为:
behave -f pretty -f allure_behave.formatter:AllureFormatter -o allure-results
-f参数支持多次传入指定多个格式化器,未单独绑定-o输出路径的格式化器会默认将内容输出到控制台。
方式2:输出精简的执行进度日志
如果不需要完整步骤输出,仅需要查看执行进度,可以替换为progress格式化器:
behave -f progress -f allure_behave.formatter:AllureFormatter -o allure-results
该格式化器会以符号形式展示用例执行状态(.代表执行通过、F代表执行失败、S代表用例跳过等)。
方式3:同时留存控制台日志到本地文件
如果需要同时将控制台输出存为本地文件留痕,可以给控制台格式化器单独指定输出路径:
behave -f pretty -o behave-execution.log -f allure_behave.formatter:AllureFormatter -o allure-results
该配置会同时向控制台打印日志、向behave-execution.log写入日志、向allure-results生成报告源文件。
Jenkins环境额外配置
如果修改命令后仍看不到实时控制台输出,可在命令前添加PYTHONUNBUFFERED=1禁用Python默认的标准输出缓冲机制,避免日志堆积到任务结束才一次性输出:
PYTHONUNBUFFERED=1 behave -f pretty -f allure_behave.formatter:AllureFormatter -o allure-results
内容的提问来源于stack exchange,提问作者Yura Bysaha
相关产品推荐
相关产品推荐

