Python--比較兩個字典部分value是否相等(可以用於接口自動化)


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","137",shop_name = shop_name,shop_short_name = shop_short_name,shop_phone = shop_phone,province = province,city = city,district = district,town = town,address = address)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM