接口测试基础-正则表达式和参数化

接口基础-正则表达式提取和替换

0、导入re模块

import re

 
 
1、创建全局数据池类
# 存储全局数据(三个用户账号、未注册的手机号等)
class GlobalData:

   pass

2、准备一个要参数化的字段,${not_existed_tel}就是一个需要参数化的地方

sql='{"mobile_phone": "${not_existed_tel}", "pwd": "12345678", "type": 1, "reg_name": "KeYou"}'

3、用正则表达式把要参数化的位置匹配到

把sql字符串中的${}查询出来,返回一个列表

result = re.findall(r"\${.*?}", sql)

4、准备要替换的参数

for item in result:
    # b.从全局数据池中读取参数
    data = getattr(GlobalData, item)这里就是参数,也就是要替换的值
    # c.替换指定的数据,然后将原始字符串sql覆盖
    # 也可以使用re.sub去替换
    sql = sql.replace(item, str(data))  这里就是将${not_existed_tel}替换成123456789
    pass

5、用替换的方式把值替换到参数化的位置

上述模块中sql = sql.replace(item, str(data))  这里就是替换,

6封装的方法


"""
-------------------------------------------------
正则表达式替换,参数化
-------------------------------------------------
"""
# 0、导入re模块
import re
from scripts.handle_mysql2 import handle_mysql#这个模块是创建未被注册是手机号码

# 1、创建全局数据池类
# 存储全局数据(三个用户账号、未注册的手机号等)
class GlobalData:

    pass
class Parameterize:

    @staticmethod
    def to_parma(src):
        # 3、定义正则表达式
        # a.findall方法将正则匹配上的值放在列表中返回
        # b.第一个参数为正则表达式,需要在字符串前加r
        # c.第二个参数为待匹配的字符串
        # d.如果匹配不上,会返回空列表
        # e.$有特殊含义,所以需要使用\来转义
        # f. .*?可以匹配任意数据,为非贪婪模式进行匹配
       
        # a.把src字符串中的说哟${}查询出来,返回一个列表
        result = re.findall(r"\${.*?}", src)
        for item in result:
            # b.从全局数据池中读取参数
            data = getattr(GlobalData, item)
            # c.替换指定的数据,然后将原始字符串src覆盖
            # 也可以使用re.sub去替换
            src = src.replace(item, str(data))
            pass

        return src


if __name__ == '__main__':
   sql='{"mobile_phone": "${not_existed_tel}", "pwd": "12345678", "type": 1, "reg_name": "KeYou"}'
  
do_sql=handle_mysql()
   not_existed_mobile = do_sql.creat_not_existed_mobile()#创建一个未被注册的手机号码
   setattr(GlobalData,"${not_existed_tel}",not_existed_mobile)#在全局数据池中创建动态类属性${not_existed_tel}
   do = Parameterize()
   do.to_parma(sql)
   pass

猜你喜欢

转载自www.cnblogs.com/nitingyue/p/12917763.html