tonglei100 / sweetest

小而美的自动化测试解决方案,支持 Web UI 测试,Http 接口测试,DB 操作测试,App 测试,小程序测试,Windows GUI 测试,文件操作

Home Page:https://sweeter.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

测试数据中 "\<" 无法正常转义成 ”<“

killuayang90s opened this issue · comments

问题描述:

  1. 测试数据一栏写入:json={"account":"\<\>","password":"test123",},,
  2. 执行测试用例时,输出的结果为: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, '>')将字符串再替换回"<"和">"

谢谢你的反馈,描述的非常清晰,下个版本修复

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

你可以先自行修改试试

感谢你的反馈,我把这份代码加上试试。