string Template
無法替換帶特殊字符的解決問題
debug.yaml
- desc: 獲取年級列表 ~ faker生成用例模板
var: {}
expect:
status_code: 200
msg: ${sum(1,2)}
hello: ${name}
問題
修改前: main.py
from string import Template
with open('debug.yaml', 'r', encoding='utf-8')as f:
f = f.read()
print(f)
f_temp = Template(f)
f = f_temp.safe_substitute({"sum(1,2)": 1, "name": "zy7y"})
print(f)
修改前:輸出
- desc: 獲取年級列表 ~ faker生成用例模板
var: {}
expect:
status_code: 200
msg: ${sum(1,2)}
hello: zy7y
tip: ${sum(1,2)} 並未被替換
解決
main.py
from string import Template
class MyTemplate(Template):
"""繼承Template,重寫屬性 idpattern, 使其可以匹配到() ,等特殊字符"""
idpattern = r'(?a:[_a-z][_a-z0-9].*)'
if __name__ == '__main__':
with open('debug.yaml', 'r', encoding='utf-8')as f:
f = f.read()
print(f)
f_temp = MyTemplate(f)
f = f_temp.safe_substitute({"sum(1,2)": 1, "name": "zy7y"})
print(f)
輸出
- desc: 獲取年級列表 ~ faker生成用例模板
var: {}
expect:
status_code: 200
msg: 1
hello: zy7y