AssertJ断言系列-----------<数据库断言二>

那么,在实际的接口测试中,我们除了要断言响应的数据正确之外,可能有的还需要断言数据层是否数据真的有入库。

assertj db是可以直接对数据库进行断言和操作的。

一、创建一个students表

CREATE TABLE `students` (      `id` VARCHAR(32) DEFAULT NULL,      `Name` VARCHAR(32) DEFAULT NULL,      `Sex` VARCHAR(32) DEFAULT NULL,      `Age` VARCHAR(32) DEFAULT NULL      ) ENGINE=INNODB DEFAULT CHARSET=utf8

二、插入三条数据

insert into `students` (`id`, `Name`, `Sex`, `Age`) values(‘1‘,‘hello‘,‘1‘,‘11‘);insert into `students` (`id`, `Name`, `Sex`, `Age`) values(‘2‘,‘world‘,‘2‘,‘22‘);insert into `students` (`id`, `Name`, `Sex`, `Age`) values(‘3‘,‘java‘,‘3‘,‘33‘);

三、编辑代码

package org.assertj.examples.db;

import org.assertj.db.type.Request;import org.assertj.db.type.Source;import org.junit.BeforeClass;import org.junit.Test;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.List;import static org.assertj.db.api.Assertions.assertThat;

/** * @ClassName DataAssertionExample * @Description TODO * @Author 12457 * @Date 2019/1/27 10:43 * @Version 1.0 **/

public class DataAssertionExample {

   private static String driver = "com.mysql.jdbc.Driver";   private static String url = "jdbc:mysql://localhost:3306/course";   private static String username = "****"; //实际用户名   private static String password = "****"; //实际密码   private static Connection conn = null;

   /*    *数据库配置连接    **/   @BeforeClass   public static void beforeClass(){      try {         Class.forName(driver);         conn = (Connection) DriverManager.getConnection(url,username,password);      } catch (ClassNotFoundException e) {         e.printStackTrace();      } catch (SQLException e) {         e.printStackTrace();      }

   }

   @Test   public void basic_request_assertion_examples(){      Source source = new Source(url,username,password);      Request request = new Request(source,"SELECT * FROM students");      //获取该表的字段名      List<String> list = request.getColumnsNameList();      for (String s : list) {         System.out.print(s + "\t");      }      //断言name这一列数据      assertThat(request).column("name")      .value().isEqualTo("hello")      .value().isEqualTo("world")      .value().isEqualTo("java");

      //断言数据库表中的数据条数      assertThat(request).hasNumberOfRows(3);

      //断言第一行的数据的值,row(0)代表第一行数据      assertThat(request).row(0)            .value().isEqualTo("1")            .value().isEqualTo("hello")            .value().isEqualTo("1")            .value().isEqualTo("11");   }

   @Test   public void basic_column_request_assertion_examples(){      Source source = new Source(url,username,password);      Request request = new Request(source,"SELECT * FROM students");

      //断言sex列中数据      assertThat(request).column("sex")            .hasValues("1","2","3");   }

   @Test   public void basic_row_request_assertion_examples(){      Source source = new Source(url,username,password);      Request request = new Request(source,"SELECT * FROM students");      assertThat(request).row(1)            .hasValues("2","world","2","22");   }

   @Test   public void size_request_assertion_examples(){      Source source = new Source(url,username,password);      Request request = new Request(source,"SELECT * FROM students");

      //表有4列3行数据      assertThat(request).hasNumberOfColumns(4);      assertThat(request).hasNumberOfRows(3);

      //另外相等的一种写法      assertThat(request).column().hasNumberOfRows(3);      assertThat(request).row().hasNumberOfColumns(4);   }

   @Test   public void request_parameters_examples(){      Source source = new Source(url,username,password);      Request request = new Request(source,"SELECT name,sex FROM students where name like ?","%o%");

      //查询出来有2条数据符号,然后对values值进行判断      assertThat(request).hasNumberOfColumns(2).hasNumberOfRows(2);      assertThat(request)            .row().hasNumberOfColumns(2).hasValues("hello","1")            .row().hasValues("world","2");   }}


原文地址:https://www.cnblogs.com/hardy-test/p/10326291.html

时间: 2024-11-03 13:05:30

AssertJ断言系列-----------<数据库断言二>的相关文章

Jmeter接口测试数据库断言的实现与设计

接口测试大部分都使用接口的响应值作为接口验证的依据,但在与数据库有交互的接口中这种结果判断不足以判断接口的正确性,本文将以jmeter作为接口测试的工具来实现接口的数据库断言 一. 总体思路概述 1. 使用jmeter发起接口请求 2. 使用json提取器获取接口响应结果中的关键内容 3. 使用jmeter发起数据库操作,得到数据库的值 4. 使用BeanShell断言,实现接口响应内容和数据库内容的对比 二. jmeter发起接口请求 以搜索接口为例,业务需求为:通过关键字搜索商品.接口信息如

屌炸天实战 MySQL 系列教程(二) 史上最屌、你不知道的数据库操作

此篇写MySQL中最基础,也是最重要的操作! 第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网远程连接法 查看\创建\使用\删除\清空\修改 数据库表(是否可空,默认值,主键,自增,外键) 表内容的增删改查 where条件.通配符_%.限制limit.排序desc\asc.连表join.组合union 查

ADRMS部署系列之(二)—安装ADRMS

下面我们来开始安装ADRMS,ADRMS其实是内置在Windows系统中的一个功能,因此我们直接在Windows Server中添加就可以了,注意ADRMS肯定是要加域的,但是不要在DC上安装ADRMS.如果有需要的话,ADRMS是可以做群集的,但是一般不太使用,安装完ADRMS之后我们不仅仅要实现常规的文档加密,也会与Exchange服务器集成,对邮件进行权限限制,首先来看ADRMS的配置 1.点击添加角色和功能 2.直接下一步 3.选择基于角色或基于功能的安装 4.选择当前的ADRMS服务器

Nginx系列教程(二)| 一文带你读懂Nginx的正向与反向代理

作者:JackTian 微信公众号:杰哥的IT之旅(ID:Jake_Internet) LAMP 系列导读 01. LAMP 系列教程(一)| 详解 Linux 环境下部署 HTTPD 服务 02. LAMP 系列教程(二)| 如何在 Linux 环境下部署 AWStats 分析系统来监控 Web 站点? 03. LAMP 系列教程(三)| 一文读懂 HTTPD 服务的访问控制 04. LAMP 系列教程(四)| MySQL 数据库系统(一) 05. LAMP 系列教程(五)| MySQL 数据

探索Oracle之数据库升级二 11.2.0.3升级到11.2.0.4完整步骤

探索Oracle之数据库升级二  11.2.0.3升级到11.2.0.4完整步骤 说明:         这篇文章主要是记录下单实例环境下Oracle 11.2.0.1升级到11.2.0.3的过程,当然RAC的升级是会有所不同.但是他们每个版本之间升级步骤都是差不多的,先升级Database Software,再升级Oracle Instance. Oracle 11.2.0.4的Patchset No:19852360下载需要有Oracle Support才可以.  Patchset包含有7个

javascript系列之DOM(二)

原生DOM扩展 我们接着第一部分来说,上文提到了两种常规的DOM操作:创建文档片段和遍历元素节点.我们知道那些雨后春笋般的库,有很大一部分工作就是提供了一些优秀 的DOM操作API.可见原生的一些方法和属性,还不能很灵活快捷的来完成我们所希望的操作.下面将总结出总结出几种很实用的扩展方法.包括 after()和before(), A:after()和before() 1 function after(elem){ 2 if(this.parentNode){ 3 this.parentNode.

Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例)

这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) Maven提高篇系列之(三)——使用自己Repository(Nexus) Maven提高篇系列之(四)——使用Profile Maven提高篇系列之(五)——处理依赖冲突 Maven提高篇系列之(六)——编写自己的Plugin(本系列完) 持续交付要“自动化所有东西”,对于集成测试也是一样.集成

【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合

[Cocos Creator ](千人群):  432818031 上一篇,介绍了Himi在使用过cc所有组件后的一篇总结,没有具体介绍每个组件的原因在于官方文档很齐全,而且也有视频的介绍. 所以希望童鞋们可以把我这两篇博文当成对组件.脚本两部分开发的整理与总结. 后续的文章,Himi应该主要更新一些官方还未补充或者还没有的教程.避免无用功. 下面直接放出代码,因为不是很难理解.所以不再一一赘述,都是常用的函数.事件监听.动作回调.定时器等开发过程中必接触的. 大致内容如下: cc 属性介绍 获

学习oracle数据库引航二——后台进程

from 谭怀远--数据库领航 后台进程 一.system monitor(SMON) (非正常关闭后的)实例恢复 二.process monitor(PMON) 回滚事务 释放锁及其它资源 重启死掉的调度器.(在共享服务器中用).分配用户连到哪个服务器上. 在监听器中注册服务信息 三.DBWn和LGWR DBWRn下写入磁盘文件 四.check point(CKPT) 喊DBWn写脏数据 完后会更新DATAFILE的HEADER和控制文件的HEADER.而HEADER中有同步所需要的信息,即C