Robot Framework如何让HTML报告显示测试关键字中传入变量的实际值
问题根因
Robot Framework默认不会自动替换普通关键字名称里写入的变量占位符:只有按照嵌入式参数规则定义的关键字,执行后生成的报告才会把关键字名里的变量位替换成实际传入的取值;普通写法的关键字,哪怕执行时变量能正常传入逻辑,报告里只会保留你写的原始${变量名}文本,不会做替换渲染。
可用解决方案
方案1:使用嵌入式参数定义关键字(最匹配需求,直接替换关键字显示文本)
自定义关键字时直接把参数位以${参数名}的格式写在关键字名称里,不需要额外在[Arguments]配置里声明这个参数,框架会自动识别参数位、匹配传入值,执行时逻辑正常取参,报告里也会自动把关键字名里的参数替换成实际传入的值。
示例代码:*** Keywords *** User sets ${selected_lang} in Language dropdown # 此处写下拉选择的实际操作逻辑,${selected_lang}为自动接收的传入参数 Select From List By Label language_locator ${selected_lang} *** Variables *** ${language_a} English *** Test Cases *** Change Language in Settings User sets ${language_a} in Language dropdown按这个写法执行后,报告里的关键字就会直接显示为
User sets English in Language dropdown。方案2:手动添加日志输出变量值(不需要改现有关键字结构)
如果不想调整现有关键字的定义逻辑,可以在用例里加内置Log关键字,把变量的实际取值打印到报告中,只是这个方法不会修改关键字本身的显示文本,变量值会作为单独的日志条目展示。
示例:*** Test Cases *** Change Language in Settings Log 本次操作选择的语言值:${language_a} User sets ${language_a} in Language dropdown方案3:调整日志级别展示传入参数详情
如果你的关键字是常规的[Arguments]传参模式,不需要修改关键字名的显示,只需要看到实际传入的参数值,可以在执行脚本时追加--loglevel TRACE参数,TRACE级别的日志会在每个关键字的展开详情里,自动展示所有入参的实际取值。
执行命令参考:robot --loglevel TRACE ./test_suite/
注意:不推荐为了实现名称替换,用
Run Keyword拼接变量生成关键字名的写法,这种写法可读性差,很容易出现关键字匹配失败、参数传递错误的问题,优先选择嵌入式参数的方案。
内容的提问来源于stack exchange,提问作者pradeep

