首页 > 数据库 >python接口自动化系列(06):解析初始化sql

python接口自动化系列(06):解析初始化sql

时间:2024-03-03 21:22:38浏览次数:34  
标签:info 06 python initSql sql var import logger

 

本系列汇总,请查看这里https://www.cnblogs.com/uncleyong/p/18033074

实现目标

将initSql中常用变量占位符(下图划线的)替换为实际值。

 

添加替换变量工具模块

substitution_tool.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: 韧
# @wx: ren168632201
# @Blog: https://www.cnblogs.com/uncleyong/

import logging
logger = logging.getLogger(__name__)
from utils.common_var_tool import cv

def var_substitution(param):
    '''常用变量占位符替换为实际值'''
    var_dic = cv.getCommonVar()
    logger.info("常用变量:{}".format(var_dic))

    for key in var_dic:
        if key in param:
            param = param.replace(key, str(var_dic[key]))  # replace返回替换后的新字符串
    return param

 

修改测试类:获取initSql并替换

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: 韧
# @wx: ren168632201
# @Blog: https://www.cnblogs.com/uncleyong/

import pytest
import logging
logger = logging.getLogger(__name__)
from conf.settings import CASE_DATA_PATH
from utils.yaml_tool import read_data_from_yaml
from utils.substitution_tool import var_substitution

class TestCase:
    @pytest.mark.parametrize("casedata", read_data_from_yaml(CASE_DATA_PATH))
    def test_case(self, casedata):
        # logger.info(f"---当前测试用例数据是:{casedata}")

        # 获取initSql
        initSql = casedata["initSql"]
        # 类型是list
        # logger.info(type(initSql))
        # logger.info(">>>>>initSql:{}".format(initSql))
        if initSql:
            for sql in initSql:
                logger.info("==================替换前sql:{}".format(sql))
                sql = var_substitution(sql)
                logger.info(f"==================替换后sql:{sql}")

  

运行结果

可以看到占位符都成功替换为了对应常用变量值

 

标签:info,06,python,initSql,sql,var,import,logger
From: https://www.cnblogs.com/uncleyong/p/18047612

相关文章

  • python接口自动化系列(03):创建自动化框架项目
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标搭建能基于pytest运行测试用例的项目。 创建项目1、输入项目名称2、选择项目位置3、自定义虚拟环境(默认即可) 创建完成 安装pytest补充:python虚拟环境操作,详见:https://www.cnblogs.c......
  • python接口自动化系列(04):读取数据文件并注入到测试方法
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标把用例yaml文件中数据读取出来,依次把每条用例数据传给测试方法。 安装模块安装操作yaml的模块pyyamlpipinstallpyyaml 测试数据文件放data目录case.yaml 内容:----epic:全栈测......
  • sql语句in的用法(使用多个列进行匹配)
    原文链接:https://www.cnblogs.com/hellohui/p/17670858.html今天遇到了in的新用法,即文中的第四条,使用多个列进行匹配,在此记录下。使用列值列表进行匹配:SELECT*FROM表名WHERE列名IN(值1,值2,值3,...)使用子查询返回多个结果进行匹配:SELECT*FROM表名WHERE......
  • python接口自动化系列(05):获取常用变量
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标获取常用变量,方便后面解析初始化sql或者请求参数的时候将常用变量占位符替换为实际值。 添加常用变量数据文件data目录下创建variable.yaml 内容:---'#{username}':tester'#{password_......
  • python接口自动化系列(02):yaml测试数据文件设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标对测试数据进行设计,数据设计决定了后续读取数据的代码该如何实现。 关于被测试接口配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 常用数据用例数据频繁使用......
  • [极客大挑战 2019]BabySQL 1
    [极客大挑战2019]BabySQL1审题还是SQL注入和之前的是一个系列的。知识点联合注入,双写绕过解题输入万能密码发现回显中没有or,猜测是使用正则过滤了or。尝试双写绕过登录成功使用联合查询,本题中过滤了from,where,or,by,union,select。看到4没有注入点,2和3都......
  • SQL注入注入方式(大纲)
    SQL注入注入方式(大纲)常规注入通常没有任何过滤,直接把参数存放到SQL语句中。宽字节注入GBK编码两个字节表示一个字符ASCII编码一个字节表示一个字符MYSQL默认字节集是GBK等宽字节字符集原理:设置MySQL时错误配置为setcharacter_set_client=gbk(它将客户端字符集设置......
  • SQL intern 29题记录及心得
    表结构21、豹子手机号用户(4个连续数字,如6666)和非豹子号用户的笔均消费金额分别是多少?withbas(selectusr_id,casewhenphone_numREGEXP'[0-9](?=\\1{3})'THEN'Leopard'`else'no-Leopard'`endasis_豹子fromid_inf)selectavg(a.trx_amt),is_豹......
  • python接口自动化系列(01):自动化测试框架设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074先看下最终效果(gif) 报告总览 前言之前分享了java自动化(详见:https://www.cnblogs.com/uncleyong/p/15867903.html),部分小伙伴建议分享一个python版本,安排!!!当然,通过测试招聘要求大家也可以发现,目前......
  • MySQL之pymysql模块
    Navicat软件我们在终端操作MySQL,既没有自动操作也无法保存,不方便开发,所以我们使用Navicat,Navicat内部封装了所有的操作数据库的命令。我们在使用它的时候只需要鼠标点击即可完成操作,无需书写SQL语句。详细参考:Day48-04navicat基本使用_哔哩哔哩_bilibili注释语法在navicat......