我手上有個財務項目要上線,所以部分工作就是數據校驗,需要保證前後頁面的數據一致【前面頁面是彙總,後面是明細】;之前也沒做過,現在邊摸索實踐 邊學習總結,分享下:
第一個情景
- 首頁-Nicepay Total字段 顯示的是總額;
- 點擊 上圖的Bill Detail ,進入bill 明細頁面第一頁,Principal Total字段顯示 某筆明細的總額;
3.數據有 很多頁
校驗的原則:所有明細的Principal Total值之和 等於 第1張圖Nicepay Total值
思路與實踐
在看到這麼多明細後,我就徹底死了手工計算的心思;只能搞自動化腳本去跑,我的想法是Web自動化,獲取Bill明細頁面第一頁 Principal Total此字段的所有值,計算sum;跳轉下一頁,繼續獲取、計算,直到最後一頁;再把得到的sum總值 和首頁的Nicepay Total值 做斷言;
具體的腳本 我好像沒啥能分享的;說下 跳轉下一頁 的代碼:
for i in range(1, int(self.my_elements(By.CSS_SELECTOR, 'li[class="number"]')[-1].text)):
self.my_element_wait(By.CSS_SELECTOR, 'button[class="btn-next"]').click()
int(self.my_elements(By.CSS_SELECTOR, ‘li[class=“number”]’)[-1].text) 將所有page這個元素找到,elements這個列表最後一個【即最後一頁】;range(最後一頁),來確定循環次數;下面click()是點擊下一頁 >;
後面和同事說起來的時候,他的思路是 直接用接口來做,會比web簡單很多–見下面第二個情景
第二個情景
1.某頁面 上面位置 顯示了當前時間段的 Total Transactions
2.此頁面的中間位置就顯示交易明細,每條明細的 debit 或 credit 加一起是Total;
3.還是很多頁
思路和實踐
使用接口自動化來做,簡單些,發送請求,獲取返回值;求和、斷言;
感覺更沒有要分享的,可能唯一要說的是 :請求明細的時候,就不要再像Web分頁,直接一口氣全部調出來all,即 ‘pageID’: 1, ‘pageSize’: 100000`
【2019-09-20修改】基於安全測試的建議,後臺就把所有接口傳遞的pageSize限制了,最大爲200;所以咋整?
可以先發送’pageID’: 1, ‘pageSize’: 200,拿到數據量totalCount;如果是不大於200,不管它;如果很多記錄,做個循環,傳遞新的pageID,再把後面的記錄加在一塊,就好;
【2019-11-29修改】循環傳pageID,我之前的思路有問題 -> 會多發請求
即 totalCount爲400,在循環的時候,range(2, 400//200 + 2) 即 range(2, 2 + 2),實際是有2、3,但是實際的情況是隻有2頁,400條可以2頁放滿,故而不合適;解決方法:
ceil() 函數返回數字的上入整數。
反思
利用Web自動化、接口自動化,來校驗前後頁面的數據,主要還是節省人工,把自己從繁雜的手工計算中解脫出來;但這2個情景的核心爲 相關字段的數據校驗;
後面如果還要做類似工作,我肯定選接口這個思路,因爲方便很多。
交流技術 歡迎+QQ 153132336 zy
個人博客 https://blog.csdn.net/zyooooxie