python 使用jinja2对html模板文件进行数据替换

背景:执行完自动化测试后,希望将获取到的测试结果数据替换html模板文件,以生成测试报告。

html模板文件

解决方案:使用python语言的jinja2组件,可以对模板文件进行各种数据处理。

参考链接:

http://docs.jinkan.org/docs/jinja2/intro.html

https://www.jianshu.com/p/3bd05fc58776

处理过程:

1-编写html模板文件,包含需要替换的变量及相关模板控制语句

2-将需要动态替换的数据,以json的形式存储在变量中

3-使用jinja2组件相关功能,读取模板文件并设置变量对应的value


相关代码:

1-html模板文件

if控制语句:

循环控制语句:

2-获取json形式的结果数据(以下仅提供如何转换成json数据,具体数据值的获取依业务而来)

def crtJsonData_case(id,status,caseName,errorMessage,caseinfo,caseSpendTime):

data = {

'id': id,

'status': status,

'caseName': caseName,

'errorMessage': errorMessage,

'caseinfo': caseinfo,

'caseSpendTime': caseSpendTime

}

return json.dumps(data)

3-使用jinja2组件进行模板替换

env = Environment(loader=FileSystemLoader('d://'))

tpl = env.get_template('template.html')

with codecs.open('report.html', 'w', encoding='utf8') as fout:

render_content = tpl.render(spendTime=summaryjsondata['spendTime'],jobRst=summaryjsondata['jobRst'],\

sucRate=summaryjsondata['sucRate'],testcase_suc=summaryjsondata['testcase_suc'],\

testcaseTotalRun=summaryjsondata['testcaseTotalRun'],falseCount=summaryjsondata['falseCount'],datalist=casejsondata)

fout.write(render_content)


完整的python脚本会读取template.html文件,并将测试结果数据替换模板文件生成新的文件report.html。生成的report.html文件如下所示。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏石开之旅

小甲鱼《零基础学习Python》课后笔记(五):闲聊之Python的数据类型

0.在Python中,int表示整形,那你还记得bool、float和str分别表示什么吗?

16510
来自专栏腾讯技术工程官方号的专栏

大牛书单 | 人工智能方向好书推荐

? 导语:读书是一生的功课,技术人通过读书实现自我提升,学习优秀知识沉淀。TEG书知道本期特邀腾讯TEG AI Lab专家姚建华、腾讯TEG AI平台部工程平...

31320
来自专栏石开之旅

小甲鱼《零基础学习Python》课后笔记(六):Python之常用操作符

0.Python的floor除法现在使用“//”实现,那3.0//2.0你目测会显示什么内容?

19920
来自专栏石开之旅

AD16及AD18鼠标移动到网络后自动高亮设置

61620
来自专栏石开之旅

小甲鱼《零基础学习Python》课后笔记(七、八):了不起的分支和循环1

assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。

22240
来自专栏代码男人

Python使用Scrapy框架爬虫(一)

1.首先我们需要安装scrapy模块,pip install scrapy ,不过这种方式经常会遇到许多未知的bug

9820
来自专栏石开之旅

小甲鱼《零基础学习Python》课后笔记(十、十一):一个打了激素的数组——列表1

2.append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?

19130
来自专栏石开之旅

RGB_TTL、LVDS、MIPI接口液晶屏学习笔记

液晶屏有RGB TTL、LVDS、MIPI DSI接口,这些接口区别于信号的类型(种类),也区别于信号内容。

71920
来自专栏石开之旅

小甲鱼《零基础学习Python》课后笔记(十三):元组——戴上了枷锁的列表

7.上节课我们通过课后作业的形式学习到了“列表推导式”,那请问如果我把中括号改为小括号,会不会得到“元组推导式”呢?

12610
来自专栏石开之旅

小甲鱼《零基础学习Python》课后笔记(十七):函数——Python的乐高积木

1) 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)

18230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励