数据库如何做断⾔处理?看完这⼀篇⽂章就够了在我们测试过程当中,经常遇到要对数据库进⾏做旁段处理,⽐如⼀个【添加】功能,添加
完数据之后,会在数据库中⽣成⼀条新的记录,那你是怎么判断数据库中有没有这⼀条记录呢?
import ast
import jsonpath
logger import logger
_mysql import MyMysql
class MyAssert:
def assert_db(self,check_db_str):
"""
1、将check_db_str转成python对象(列表),通过eval
2、遍历1中的列表,访问每⼀组db⽐对
3、对于每⼀组来讲,1)调⽤数据库类,执⾏sql语句。调哪个⽅法,根据type来决定。得到实际结果
2)与期望结果⽐对
:param check_db_str: 测试数据excel当中,assert_db列读取出来的数据库检验字符串。
⽰例:[{"sql":"select id from member where mobile_phone='#phone#'","expected":1,"type":"count"}]
:return:
"""
check_db_res = []
check_db_list = ast.literal_eval(check_db_str) # ⽐eval安全⼀点。转成列表。
db = MyMysql()
# 遍历check_db_list
for check_db_dict in check_db_list:
logger.info("当前要⽐对的sql语句:\n{}".format(check_db_dict["sql"]))
logger.info("当前执⾏sql的查询类型(查询结果条数/查询某个值.):\n{}".format(check_db_dict["db_type"]))
logger.info("期望结果为:{}".format(check_db_dict["expected"]))
# 根据type来调⽤不同的⽅法来执⾏sql语句。
if check_db_dict["db_type"] == "count":
logger.info("⽐对数据库查询的结果条数,是否符合期望")
# 执⾏sql语句
res = db.get_count(check_db_dict["sql"])
logger.info("sql的执⾏结果为:{}".format(res))
# 将⽐对结果添加到结果列表当中
check_db_res.append(res == check_db_dict["expected"])
logger.info("⽐对结果为:{}".format(res == check_db_dict["expected"]))
if False in check_db_res:
<("部分断⾔失败!,请查看数据库⽐对结果为False的")
# raise AssertionError
return False
else:
logger.info("所有断⾔成功!")
return True
if__name__ == '__main__':
# 已经从excel当中读取出来的字符串
check_db_str = """[{"sql":"select id from member where
mobile_phone='155********'","expected":1,"db_type":"count"}]"""
res = MyAssert().assert_db(check_db_str)
print(res)
eval是做什么的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论