eg:例如你调用了一个新增的接口,以往功能测试的话,你再web端新增一个店铺之后,你肯定要去数据库中查看,这些数据插入的对不对,是否正确的插入了每个字段

# 比较两个字典部分是否相等
def compare_two_dict(dict1, dict2, key_list):
flag = True
keys1 = dict1.keys()
keys2 = dict2.keys()
if len(key_list) != 0:
for key in key_list:
if key in keys1 and key in keys2:
if dict1[key] == dict2[key]:
flag = flag & True
else:
flag = flag & False
else:
raise Exception('key_list contains error key')
else:
raise Exception('key_list is null')
if flag:
result = 'PASS'
else:
result = 'FAILED'
return result if __name__ == '__main__':
dict1 = {
'a': 1,
'b': 2,
'c': 3,
'd': 4
}
dict2 = {
'a': 1,
'b': 2,
'c': 3,
'd': 8
}
key_list = ['a', 'c', 'b', 'd']
result = compare_two_dict(dict1, dict2, key_list)
print(result)

按照上面的列子我写出了自己的代码:前置条件:

但是有个前提条件:

'''
table:表名
key:要查找的字段名称
value:要查找的字段值
**kwargs:要检验的字段值,通过我新增的数据与数据库中的对比
例如你调用了一个新增的接口,以往功能测试的话,你再web端新增一个店铺之后,你肯定要去数据库中查看,这些数据插入的对不对,是否正确的插入了每个字段
'''
def assert_add_contents(db,cursor,table,key,value,**kwargs):
sql = 'select * from {} where {}={}'.format(table,key,value)
num = cursor.execute(sql)
result = cursor.fetchall()
print("查找到%d条数据" % num)
print("数据库查询数据为:{}".format(result))
# 这个是要对比的字段
field_list = list(kwargs.keys())
if num > 0:
print("kwargs:{}".format(kwargs))
print("result:{}".format(result[0]))
flag = True
keys1 = kwargs.keys()
keys2 = result[0].keys()
if len(field_list) != 0:
for key in field_list:
if key in keys1 and key in keys2:
if kwargs[key] == result[0][key]:
flag = flag & True
else:
flag = flag & False
else:
raise Exception('key_list contains error key')
else:
raise Exception('key_list is null')
if flag:
result = 'PASS'
else:
result = 'FAILED'
print("result============================={}".format(result))
return result
else:
pass db = config.db
cursor = db.cursor(cursor = pymysql.cursors.DictCursor) param = PostParameter().post_param(path,"shop","add_shop.json", "case001")
print("param[data]:{}".format(param["data"]))
shop_name = param["data"]["shop_name"]
shop_short_name = param["data"]["shop_short_name"]
shop_phone = param["data"]["shop_phone"]
province = param["data"]["province"]
city = param["data"]["city"]
district = param["data"]["district"]
town = param["data"]["town"]
address = param["data"]["address"] assert_add_contents(db,cursor,"t_shop_info","id","",shop_name = shop_name,shop_short_name = shop_short_name,shop_phone = shop_phone,province = province,city = city,district = district,town = town,address = address)

Python--比较两个字典部分value是否相等(可以用于接口自动化)的更多相关文章

  1. Python: 比较两个字典是否相等

    有些情况下会遇到比较两个字典是否相等的问题 直观来想,会比较键是否一致,其对应的值是否相等 python中,还有有另外两种方法: 直接使用== a = {'a': 1, 'b': 2} b = {'a ...

  2. Python 中两个字典(dict)合并

    dict1 = { "name":"owen", "age": 18 } dict2 = { "birthday": & ...

  3. python 对比两个字典的差异

    实际遇到的问题逻辑很繁杂,就不全写了.最后是通过对比两个字典差异来解决的.找出两个字典的差异,可参考以下代码. dict1 = {'a':1,'b':2,'c':3,'d':4} dict2 = {' ...

  4. python合并两个字典

    1.借助dict(d1.items() + d2.items())的方法 2.借助字典的update()方法,没有返回值 3.借助字典的dict(d1, **d2)方法 4.d3={**d1,**d2 ...

  5. 【转载】Python中如何高效实现两个字典合并,三种方法比较。

    本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个 ...

  6. python 两个字典合并

    dict1={1:[1,11,111],2:[2,22,222]}dict2={3:[3,33,333],4:[4,44,444]}合并两个字典得到类似 {1:[1,11,111],2:[2,22,2 ...

  7. 【python cookbook】【数据结构与算法】9.在两个字典中寻找相同点

    问题:寻找两个字典中间相同的地方(相同的键.相同的值等) 解决方案:通过keys()或者items()方法来执行常见的集合操作(比如求并集.交集和差集)

  8. python两个字典合并,两个list合并

    1.两个字典:a={'a':1,'b':2,'c':3} b= {'aa':11,'bb':22,'cc':33} 合并1:dict(a,**b)  操作如下: 合并2:dict(a.items()+ ...

  9. Python两个字典键同值相加的几种方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Jerry_1126/article/de ...

随机推荐

  1. Ehcache缓存框架与 Shiro 框架 出现出现验证错误 && Tomcat 缓存清除的问题

    当一个项目使用久了以后就会出现各种问题,下面是我遇到的一个权限验证错误的问题 我的项目是   Ehcache 结合 Shiro  一起使用的,项目用用久了出现   Token验证错误,Cookie之类 ...

  2. 如何面试QA(面试官角度)

    面试是一对一 或者多对一的沟通,是和候选人 互相交换信息.平等的. 面试的目标是选择和雇佣最适合的人选.是为了完成组织目标.协助人力判断候选人是否合适空缺职位. 面试类型: (1)预判面试(查看简历后 ...

  3. 测试并整理的 Airpods Pro 刻字可用的最全特殊符号

    天气符号 ☉ 文化符号 卍卐 办公室符号 № ℗ ℡ ℀ ℅ ™ © ® ‰ ¶ § 技术符号 ⇧  打勾符号 ˇ ∨ √ 人的符号 ♀ ♂ ヅ ツ ü 星星符号 ☆ ★ ✽ 箭头符号 ↖ ↗ ↘ ...

  4. EF中的持久化场景

    使用EF实现实体持久化(保存)到数据库有两种情况:在线场景和离线场景. 1.在线场景 在线场景中,context是上下文实例,读写都通过一个context. 这种方案适用于连接本地数据库或同一网络上的 ...

  5. Linux oracle中文乱码的问题解决

    乱码问题的根源是字符集的修改 1.查看linux的默认语言 2.查看客户端的语言编码设置 配置文件中的配置: cat  ~/.bash_profile 注意修改配置信息: export PATHexp ...

  6. jquery+layer实现无刷新、删除功能(laravel框架)

    先来看一下效果 路由代码 Route::get('car/{id}/delete', 'CarController@delete'); 控制器层代码 //删除汽车信息 public function ...

  7. koa2第一天 async详解

    一.什么是async    async其实是ES7的才有的关键字,放在这里说,其实是和我们前面所说的Promise,Generator有很大关联的.async的意思是"异步",顾名 ...

  8. 格式化输出_python

    一.直接使用 +a='chen'b='xiao'c='zan'print(a+b+c) 二.利用占位符 %%s:占位符:%d:整数:%x:十六进制:%f:浮点数(默认6位小数)特别注意浮点数: 指定长 ...

  9. 2019年牛客多校第一场B题Integration 数学

    2019年牛客多校第一场B题 Integration 题意 给出一个公式,求值 思路 明显的化简公式题,公式是分母连乘形式,这个时候要想到拆分,那如何拆分母呢,自然是裂项,此时有很多项裂项,我们不妨从 ...

  10. mysql yum 卸载取消开机自启动

    查询安装的yum源rpm -qa | grep -i mysql 使用yum remove卸载 yum remove 刚才过滤出来的包一个个来 剩下卸载不了使用 rpm -e --nodeps: rp ...