我手上有个财务项目要上线,所以部分工作就是数据校验,需要保证前后页面的数据一致【前面页面是汇总,后面是明细】;之前也没做过,现在边摸索实践 边学习总结,分享下:
个人博客:https://blog.csdn.net/zyooooxie
第一个情景
- 首页-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