推广系统,有如下测试场景:

pIdList-->单品/库存/API-->JavaBean-->redis-->FreeMarker-->xml文件-->NFS-->nginx-->合作方push/pull

推广系统的合作方定义meta data,有JSON格式的,也有xml格式的,之前通过Python反序列化JSON文件进行检查,对于xml可以使用xmllint进行检查。

通过品id调用单品API获取对象缓存至redis步骤经过多个项目测试考验,已经比较成熟。对于新接入的项目,有一个很重要的测试环节,根据FreeMarker模板将JavaBean生成的xml进行测试,除了针对模板本身的测试,也要对基于模板生成的xml进行测试。

A、根据meta xml生成schema文件

使用trang.jar,通过meta xml生成xsd规则文件。

java -jar trang.jar demo.xml demo.xsd

B、编写shell脚本进行批量检查

# 对于当前目录下xml,通过xmllint配合schema进行标签及内容类型检查,将标准错误输出重定向到文件
for i in *.xml
do
xmllint --noout --schema demo.xsd "$i" > _"$i".rs 2>&1
echo -n .
done

mv _*.rs xmllint_rs/
cd xmllint_rs/
find . -name _*.rs -type f -size -25c -exec rm -rf {} ;
echo .
echo 请立即查看结果文件夹....

C、结果检查

[root@Centos64 xmllint_rs]# cat _99964.xml.rs
99964.xml:4: parser error : Opening and ending tag mismatch: data line 3 and product_id
product_id><![CDATA[20622471]]></product_id>
^
99964.xml:30: parser error : Opening and ending tag mismatch: dataset line 2 and data
</data>
^
99964.xml:31: parser error : Extra content at the end of the document
<data>
^

#################################################

[root@Centos64 xmllint_rs]# cat _99881.xml.rs
99881.xml:211: element total_comment_num: Schemas validity error : Element total_comment_num: 1,004 is not a valid value of the atomic type xs:integer.
99881.xml fails to validate

推荐阅读:

相关文章