上一篇实现数据分离升级版--从DB获取数据,以及对应的请求实现,作为一个case,还缺少了预期结果与实际结果的获取及对比。因为前面的文章已经说过接口返回值的获取及对比,所以这篇不说这块了,这篇说一下DB存储部分的获取。

  上一篇有提过如何从服务器获取mysql二进制日志获取操作涉及到哪些DB变化。我们手工新增后,可以看到对应的数据库结果,其中主要分三块:①手工输入的内容;②数据库自己生成的内容,如自动生成的递增id;③被测代码生成的内容,如uuid、版本信息。其中①的部分是我们主要要校验的,②、③用于关联①的内容。

  上一篇中我们获得了接口请求要用的数据,预期结果获取同理,且不需要对数据再做处理。

  下面对不同的场景说明下怎么获取实际结果。

  PS:如果可以,还是尽可能早的与开发沟通做好,这样自动化测试、性能测试等都相对容易开展

  1、结果只有一张表,只有一条数据,且接口有返回id

  在前面3开放API练习中有说过怎么取接口返回值中指定key的value,假设我们已经通过该方式取到了id,则通过id就可以取到实际结果,如下图

                            图1

  2、结果只有一张表,只有一条数据,但是接口未返回id,id是数据库自增的

  1)接口请求后,查询最大id,获取对应data

                            图2

  2)通过数据特性(如某个字段值唯一、多个字段关联值唯一、create time),查询id,获取对应data,下图为xxkey字段唯一

                          图3

  3、结果只有一张表,只有一条数据,但是接口未返回id,id为uuid

  uuid组成:当前日期和时间+时钟序列+全局唯一的IEEE机器识别号

  因为uuid的特性,所以max(id)的方式不适用,只能通过数据特性来查询。

  4、结果只有一张表,有多条数据(一般是主单下的明细),id为数据库自增的

  PS:因为id为数据库自增的,所以查询结果数据的顺序与新增的顺序一致

                          图4

  5、结果只有一张表,有多条数据,id为uuid,接口有返回ids

  PS:因为是uuid,所以若用4中的方法,查询结果数据的顺序不一定与新增顺序一致(因为新增的数据取自预期结果的数据,因此顺序与预期结果一致,所以就导致实际结果!=预期结果)

                          图5

  6、结果只有一张表,有多条数据,id为uuid,接口未返回ids

    1)一般情况下,这种新增明细,新增完前端会自动请求另外一个接口,查询明细列表,前端显示为列示明细信息,接口返回值为xml,如下图

                          图6

  先import XML

                          图7--import库XML

  可以在执行完新增明细接口后,执行查询明细列表的接口,获取对应的ids,该顺序会与新增的顺序一致,后面查询数据与5的情况一致

                          图8

  2)根据数据特性分别查询明细id,而后查询结果data,2与5结合

  7、结果涉及多张表,都只有一条数据,如下图,B、C表通过A_id与A关联

                    图9

  分别通过A_id查询A、B、C,赋值给dict${result_dicts_list_dict},返回

                          图10

  8、结果涉及多张表,关联表中有的数据有多条,如下图B

  PS:数据量比较大,一般只会返回主表id,即下图中的A_id

              图11

  若B_id为数据库自增,则同7

  若B_id为uuid,则7+6

上一篇  7、大型项目的接口自动化实践记录----数据分离升级版

下一篇  9-1、大型项目的接口自动化实践记录----数据库结果、JSON对比

8、大型项目的接口自动化实践记录----DB分别获取预期结果、实际结果的更多相关文章

  1. 9-1、大型项目的接口自动化实践记录----数据库结果、JSON对比

    上一篇写了如何从DB获取预期.实际结果,这一篇分别对不同情况说下怎么进行对比. PS:这部分在JSON对比中也适用. 1.结果只有一张表,只有一条数据 数据格式:因为返回的是dicts_list的格式 ...

  2. 9-2、大型项目的接口自动化实践记录----递归判断两个json串是否相等

    1.已知json串构成的情况下判断 先构造一下场景,假设已经把各个数据都移除掉不对比的字段 图1 预期.实际结果,复杂接口返回多层嵌套json时,同下 图2 预期.实际结果值为:{child_json ...

  3. 3、大型项目的接口自动化实践记录----开放API练习

    开始做实际项目前,先拿个网上的简单API练下手 一.API说明: 接口信息 接口名:京东获取单个商品价格 地址:http://p.3.cn/prices/mgets 入参:skuids=J_商品ID& ...

  4. 2、大型项目的接口自动化实践记录--接口测试简介及RequestsLibrary关键字简介

    1.接口测试简介 1)先简单介绍下接口测试,那么什么是接口测试呢? 百科的回答:接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 看起来有 ...

  5. 1、大型项目的接口自动化实践记录--robotframework环境搭建

    因为人力.团队技术问题,选用robotframework来做自动化,首先说下环境搭建 齐涛道长的入门教程非常棒:http://blog.csdn.net/tulituqi/article/detail ...

  6. 接口自动化平台搭建(二),搭建django项目与接口自动化平台的由来与功能特征

    1.创建django项目 a.使用命令创建,安装完django之后就有django-admin命令了,执行命令创建即可,命令如下: django-admin startproject my_djang ...

  7. python入门以及接口自动化实践

    一.Python入门必备基础语法# 标识符:python中我们自己命名的都是标识符# 项目名 包名 模块名# 变量名 函数名 类名# 1:字母 下划线 数字组成 命名的时候不能以数字开头# 2:见名知 ...

  8. 19 | 真实的战场:如何在大型项目中设计GUI自动化测试策略

  9. python+pytest接口自动化(16)-接口自动化项目中日志的使用 (使用loguru模块)

    通过上篇文章日志管理模块loguru简介,我们已经知道了loguru日志记录模块的简单使用.在自动化测试项目中,一般都需要通过记录日志的方式来确定项目运行的状态及结果,以方便定位问题. 这篇文章我们使 ...

随机推荐

  1. 喵星人教你 HTTP 状态码

    在我们日常 Web 开发中,或多或少的都接触过 HTTP 状态码,那这些状态码代表什么意思呢?熟悉这些状态码又有什么好处呢?下面我就为大家一一道来,可以把本片文章'收藏'以备不时之需. HTTP 状态 ...

  2. (持续更新)Qt3D 学习资源

    目录 一.前言 1.1 什么是Qt3D 1.2 Qt3D 的利与弊 利:原生支持 弊处:资料过少 二.学习建议 2.1 OpenGL 学习资料 2.2 Qt3D 资料 2.2.1 视频资料 2.2.4 ...

  3. JS处理时间戳、前台拿到日期时间戳,时间戳转日期格式

    今晚做分页的时候,遇到后台往前台传日期类型,会出现这种情况,好像是微软为了解决操作系统兼容性问题,将日期全部转换为从1970年1月1日至现在时间的时间戳.为了解决这个问题,特意百度了一番,整理了处理日 ...

  4. JavaScript-倒计时效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Net Core 2.1 日志记录框架NLog+Mysql配置

    NLog是什么? 这里还是简单介绍一下吧,为了让小白也知道.NLog是一个灵活的免费日志记录平台,适用于各种.NET平台,包括.NET Core.NLog可以通过简单地配置就可以可以很方便的写入多个日 ...

  6. 如何查看jsplumb.js的API文档(YUIdoc的基本使用)

    目录 一.问题描述 二. 处理方法 三. YUIdoc工具介绍 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端> ...

  7. Codeforces Gym101341I:Matrix God(随机化构造矩阵降维)***

    http://codeforces.com/gym/101341/problem/I 题意:给三个N*N的矩阵,问a*b是否等于c. 思路:之前遇到过差不多的题目,当时是随机行(点),然后验证,不满足 ...

  8. Codeforces 617E:XOR and Favorite Number(莫队算法)

    http://codeforces.com/problemset/problem/617/E 题意:给出n个数,q个询问区间,问这个区间里面有多少个区间[i,j]可以使得ai^ai+1^...^aj ...

  9. 浅谈 JavaScript 中 Array 类型的方法使用

    前言:Array 类型是 JavaScript 中除了 Object 类型以外最常用的类型. 一.创建数组 JavaScript 中的数组与其他语言中的数组有着很大的区别.例如Java.PHP等语言中 ...

  10. java高并发系列-第1天:必须知道的几个概念

    java高并发系列-第1天:必须知道的几个概念 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后, ...