数据完整性测试之【一】接口返回值和数据库表里的记录

之前做了一期关于校验Web前后相关页面数据的分享,这次来做一期 关于接口返回值和数据库的记录的校验

情景是 我们产品要我校验web前端页面的数据,保证所呈现出来的数据结果的准确性,实际我没整过,也不知道这部分要咋测。几万条数据的明细,我真不可能一条一条数据去对。我的思路是 校验接口返回值和数据库表的记录;

【实际思路和产品要求的 还是有些问题的,因为前端页面解析时会对多个空格、回车做压缩,所以接口返回值会被“修改”,和前端真正显示的还有极个别的差别;再不用前端特殊处理的前提下,如果把页面数据导出CSV文件后,将其和数据库的记录做个校验,这样可能更加符合我们产品的要求-后面会分享

具体情景

前端页面:
在这里插入图片描述
接口返回值:
在这里插入图片描述
接口返回的值我就不上图了;

数据库表里的字段:【部分字段马赛克处理,谅解】
在这里插入图片描述
在这里插入图片描述

对比2个列表的元素

拿到接口返回值和数据库表里的数据后,需要把每一条明细对比,到底能不能对得上;我的思路是将这2个列表的元素做对比;

封装的方法:传入2个list,对list1做遍历,判断此元素是否在list2,如果在,就删掉list2的;如果不在,就报错;等待整个遍历结束,断言list2是否为空;

    def t_f3(self, list_a, list_b):
        """for 循环"""
        if len(list_a) == len(list_b):
            print(len(list_b), len(list_a), '2个list的长度')

            for i in range(len(list_a)):
                if list_a[i] in list_b:
                    print(list_a[i])
                    list_b.remove(list_a[i])
                else:
                    print('error')
                    raise AssertionError

            assert len(list_b) == 0
            print('校验通过')

        else:
            print('长度不相同', len(list_b), len(list_a))
            raise AssertionError
    def t_f2(self, list_a, list_b):
        """while 循环"""
        if len(list_a) == len(list_b):
            print(len(list_b), len(list_a), '2个list的长度')

            for a in list_a:
                while a in list_b:
                    list_b.remove(a)
                    break

            assert len(list_b) == 0
            print('校验通过')
        else:
            print('长度不相同', len(list_b), len(list_a))
            raise AssertionError
    def t_f1(self, list_a, list_b):
        """循环嵌套"""
        if len(list_a) == len(list_b):
            print(len(list_b), len(list_a), '2个list的长度')

            for a in list_a:
                for b in list_b:
                    if a == b:
                        print(a)
                        list_b.remove(b)
                        break

            assert len(list_b) == 0
            print('校验通过')
        else:
            print('长度不相同', len(list_b), len(list_a))
            raise AssertionError

这一部分分享的 三个方法是一个思路。但这一部分 我花了一周的时间,还是依靠同事的帮助;(因为我的思路,始终没能解决重复元素的问题)

我最初的思路是循环嵌套两个list,若list1的a == list2的b,将其加入另一个list3,最后判断list3的长度和list1、list2是否相等;
后面改为先求list1、list2的交集、再求并集、最后把交集、并集求差集,断言差集的长度为0;

若list1 = [1, 2, 2, 2, 2, 2, 2, 2, 2, 2],list2 = [2, 1, 1, 1, 1, 1, 1, 1, 1, 1],即list1、list2长度相同 且 里面有不同的重复元素,我的2个思路实际是没法测出来的;

脚本执行结果

在这里插入图片描述

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章