數據完整性測試之【一】接口返回值和數據庫表裏的記錄

之前做了一期關於校驗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

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