现在把以前那款离线自动化测试工具,作为一个模块加入到我们公司自主研发的平台里面。至于两个版本的差异,后面抽空整理一下。
问题:现在远程jenkins执行场景(多个脚本的集合)报告不友好,报告场景名称及脚本名称总是英文显示(因为测试脚本是java脚本),但其实数据库是有中文名称保存的。于是,得改造起来。
最开始,就是平台点击执行的时候,把中文名称一起传到回放代码里面,然后生成监听类文件的时候获取,结果:出糗了。暂时没有截图了,但是可以想象一下,一个场景20几个甚至90几个脚本,全都是一个名称,,哈哈哈
突然想起来,加description
字段就可以防止每一次的测试用例中文名被覆盖。
话不多说了,直接讲一下需求以及实现。
需求:把dp_script表的script_name字段内容放入到script_file_content字段中@Test后面,同时需要添加内容(description ="“);即:
script_file_content中的@Test改为@Test(description ="script_name“)
关键在于,确定@Test位置以及将script_name添加,同时拼接上其他信息。
1、一开始是想到instr(列名,字符串)
函数获取位置,用concat(str,str)
把left(列名,位置)
和right(列名,length(列名-定位))
,但是每个脚本长度不一致,添加script_name后,长度计算也是没有规律的。
2、换个思路,就是替换REPLACE(列名,被替换的字符串,替换的字符串)
+拼接CONCAT(str,str,str,....)
。
于是就是:
UPDATE DP_SCRIPT
SET script_file_content = REPLACE (
script_file_content,
'@Test',
CONCAT('@Test(description ="',script_name,'")') ) ;
翻译一下:
update 表名
set 字段1=replace(
字段1,
被替换的字符串,
CONCAT('str1',字段2,'str2'));
运行后,
不到一秒钟,就替换完成了。感叹!