示例#1
0
class HandleAssert:
    def __init__(self):
        self.sql_com_res = {}  # 存储sql查询之后的比较结果
        self.db = HandleDB()  # 打开数据库连接

    def assert_sql(self, check_sql_str):
        self.get_sql_comp_res(check_sql_str)
        # 关闭数据库连接
        self.db.close()

        if False in self.sql_com_res.values():
            logger.error("断言失败,数据库比对不成功!")
            raise AssertionError
        else:
            logger.info("数据库比对成功!")

    def get_sql_comp_res(self, check_sql_str):

        check_sql_dict = eval(check_sql_str)
        logger.info("数据库校验为:\n{}".format(check_sql_dict))

        if check_sql_dict["check_type"] == "value":
            logger.info("比较sql语句查询结果之后的值")
            sql_res = self.db.get_one(check_sql_dict["check_sql"])
            logger.info("执行sql:{}".format(check_sql_dict["check_sql"]))
            logger.info("查询结果:{}".format(sql_res))
            logger.info("预期结果为:{}".format(check_sql_dict["expected"]))

            # 执行的结果进行比较。sql_res为字典类型
            for key, value in check_sql_dict["expected"].items():
                if key in sql_res.keys():
                    if isinstance(sql_res[key], Decimal):
                        sql_res[key] = float(sql_res[key])
                        logger.info("将Decimal转换为float后的值:{}".format(sql_res[key]))
                    if value == sql_res[key]:
                        self.sql_com_res[key] = True  # 比较成功 存储到sql_com_res中
                        logger.info("比较成功!")
                    else:
                        self.sql_com_res[key] = False  # 比较失败 存储到sql_com_res中
                        logger.info("比较失败!")
                else:
                    logger.info("sql查询结果里面没有对应的列名{},请检查预期结果或查询语句是否正确}".format(key))
        # 比对slq语句查询之后的条数
        elif check_sql_dict["check_type"] == "count":
            logger.info("比较sql语句查询之后的条数,sql查询结果为整数,只要比对数字即可!")
            sql_res = self.db.get_count(check_sql_dict["check_sql"])
            logger.info("执行sql:{}".format(["check_sql"]))
            logger.info("查询结果:{}".format(sql_res))
            logger.info("预期结果为:{}".format(check_sql_dict["expected"]))
            # 比对
            if sql_res == check_sql_dict["expected"]:
                self.sql_com_res["count"] = True
                logger.info("比较成功!")
            else:
                self.sql_com_res["count"] = False
                logger.info("比较失败!")
示例#2
0
'''
作者:seak
时间:
项目:
题目:
作用:
备注:
'''
import decimal

from common.handle_db import HandleDB
from common.myconfig import conf

#调用数据库控制类
db = HandleDB()
#输入查询语句
sql = 'SELECT leave_amount FROM futureloan.member WHERE mobile_phone="{}"'
#调用配置文件中user的手机号码
phone = conf.get_str("test_data", 'user')

#获取这个电话号码所拥有的金额,格式化sql语句
s_amount = db.get_one(sql.format(phone))[0]
print(s_amount, type(s_amount))

#decimal的类型不能与float相加,所以要进行转化,将其他数据转化为decimal问题,转化之前线转化成字符串否者会有精度问题
amount = 100.1
amount = decimal.Decimal(str(amount))
all_amount = s_amount + amount
print(all_amount)