如何让Serenity将参数值包裹在<pre>标签中以正确显示报告格式?
让Serenity测试报告用
标签保留参数的空格与换行格式
没问题!要实现这个需求,你可以通过自定义Serenity的参数处理逻辑或者直接在步骤注解里嵌入HTML格式,下面是两种具体的实现方式:
方案1:全局自定义参数转换器
如果希望所有字符串类型的参数都自动被<pre>标签包裹,你可以创建一个自定义的参数转换器,让Serenity全局应用这个规则:
- 首先创建一个实现
ParameterConverter接口的类:
import net.thucydides.core.converters.ParameterConverter; public class PreTagParameterConverter implements ParameterConverter { @Override public Object convert(Object original, Class<?> targetType) { // 只处理字符串类型的参数 if (original instanceof String) { return "<pre>" + original + "</pre>"; } // 非字符串参数保持原样 return original; } }
- 接着在
serenity.properties配置文件中指定这个转换器:
serenity.parameter.converter=com.yourpackage.PreTagParameterConverter
替换com.yourpackage为你实际的包路径即可。这样所有字符串参数都会自动被<pre>包裹,报告里的空格、换行就能完美保留了。
方案2:针对特定步骤手动设置HTML格式
如果只需要在个别步骤中应用这个格式,直接在@Step注解里嵌入<pre>标签更灵活:
比如你的步骤定义可以写成这样:
import net.thucydides.core.annotations.Step; public class YourSteps { @Step("提交以下数据:<pre>{0}</pre>") public void submitGivenData(String inputData) { // 这里写你的提交逻辑,比如调用API接口 } @Step("条目已更新为以下数据:<pre>{0}</pre>") public void verifyEntryIsUpdated(String expectedTable) { // 这里写你的验证逻辑,比如对比返回结果 } }
当你传入带有换行和空格的表格数据时,<pre>标签会让报告里的内容保持原始格式。比如你示例中的表格,可以先把它转换成带有换行的字符串再传入:
String expectedTable = "| status | entry_id |\n| PROCESSED | xxxx |"; verifyEntryIsUpdated(expectedTable);
这样测试报告里就会正确显示表格的格式啦。
内容的提问来源于stack exchange,提问作者Nix
相关产品推荐
相关产品推荐

