测试数据中 "\<" 无法正常转义成 ”<“
killuayang90s opened this issue · comments
killua.Yang commented
问题描述:
- 在
测试数据
一栏写入:json={"account":"\<\>","password":"test123",},,
- 执行测试用例时,输出的结果为:
BODY: b'{"account": "dsfw4rwfdfstg433dsdtgsgt43trfdf", "password": "test123"}'
排查原因
在utility.py
文件中
def replace(data):
......
......
data = data.replace(r'\<', left_angle).replace(r'\>', right_angle)
......
......
# 正则匹配出 data 中所有 <> 中的变量,返回列表
keys = re.findall(r'%s' %(left_delimiter+'(.*?)'+right_delimiter), data)
_vars = {}
for k in keys:
......
......
return data
上述代码在执行此次用例在解析测试数据一栏时,keys匹配出来的内容为空,导致函数不进入for循环,而直接返回data。此时data已经被left_angle 和 right_angle 的字符串替换。
注意:如果测试数据
一栏中包含正常的变量值,则能进入for循环,"\<" 就能被正常转义成 <
建议
根据以上情况,是否可以在代码中增加对keys的判断,如果为空,则执行一次data = data.replace(left_angle, '<').replace(right_angle, '>')
将字符串再替换回"<"和">"
tonglei commented
谢谢你的反馈,描述的非常清晰,下个版本修复
310行开始修改如下:
else:
data = data.replace(left_delimiter + k + right_delimiter, str(value))
if isinstance(data, str):
data = data.replace(left_angle, '<').replace(right_angle, '>')
return data
你可以先自行修改试试
killua.Yang commented
感谢你的反馈,我把这份代码加上试试。