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

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");
}
}
												

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

  1. AssertJ断言系列-----------<数据库断言三>

    其实,是有很多种数据断言的使用.那么,我们在接口的测试中,到底应不应该加上数据库断言呢?我的观点是,视情况而定:某一些特殊的场景或者特殊的业务,那么我们就一定要加上数据库断言.不是我们测试人员,不相信 ...

  2. AssertJ断言系列<一>

    1 - Get AssertJ Core assertions Maven的pom.xml加入如下配置: <dependency> <groupId>org.assertj&l ...

  3. ShoneSharp语言(S#)的设计和使用介绍系列(7)— 布尔Bool及对象Object

    ShoneSharp语言(S#)的设计和使用介绍 系列(7)— 布尔Bool及对象Object 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ ...

  4. Java单元測试工具JUnit 5新特性一览

    Java单元測试工具JUnit 5新特性一览 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JUnit是最流行的开源 ...

  5. 流式断言器AssertJ介绍

    本文来自网易云社区 作者:范旭斐 大家在使用testng.junit做自动化测试的过程中,经常会用到testng.junit自带的断言器,有时候对一个字符串.日期.列表进行断言很麻烦,需要借助到jdk ...

  6. JUnit 单元测试断言推荐 AssertJ

    文章转自:http://sgq0085.iteye.com/blog/2030609 前言 由于JUnit的Assert是公认的烂API,所以不推荐使用,目前推荐使用的是AssertJ. Assert ...

  7. Pytest系列(2) - assert断言详细使用

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 与unittest不同,py ...

  8. Selenium3 + Python3自动化测试系列五——常用断言Assertion

    断言Assertion 验证应用程序的状态是否同所期望的一致. 常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选. selenium 提供了三种模式的断言:a ...

  9. $python正则表达式系列(5)——零宽断言

    本文主要总结了python正则零宽断言(zero-length-assertion)的一些常用用法. 1. 什么是零宽断言 有时候在使用正则表达式做匹配的时候,我们希望匹配一个字符串,这个字符串的前面 ...

随机推荐

  1. Visual Studio 2010 常用快捷方式

    调试快捷键 F6:           生成解决方案 Ctrl+F6:   生成当前项目 F7:           查看代码 Shift+F7:  查看窗体设计器 F5:           启动调 ...

  2. for(var i=0;i<5;i++){ setTimeout(function() { console.log(i) }, 100);}

    涉及异步.作用域.闭包 1.settimeout是异步执行,100ms后往任务队列里面添加一个任务 2.let不仅将i绑定到for循环块中,事实上它将其重新绑定到循环体的每一次迭代中 3.闭包 set ...

  3. vargant

    http://blog.csdn.net/openn/article/details/54927375

  4. centos7 redis伪集群安装

    安装gcc: yum install gcc -y   上传redis软件包到 /home下   解压: tar xf redis-3.2.11.tar.gz   进入 redis 目录 : cd r ...

  5. Javascript变长参数和默认参数

    /* javascript 变长参数 * 实参少于形参: 剩下的参数如果没有默认值,将解析为undefined * 实参多于形参: 剩下的实参可以通过 "实参对象"-argumen ...

  6. php redis 单例模式

    单例模式思想其实很简单 首先 有一个实例的静态变量 构造方法和克隆方法设置为私有,防止外部直接new 提供一个获取实例的静态方法 代码如下: class Redis { private static ...

  7. github push403错误的处理

    如果没有什么别的问题的话,推荐使用SSH的方式.请参考:http://stackoverflow.com/questions/7438313/pushing-to-git-returning-erro ...

  8. 用 pyqt4 编写的一个翻译小工具

    有时候我们在开发时遇到一些陌生的英文单词或者不容易看出某些长句的中文意思时该怎么办呢?打开桌面上的翻译软件?打开浏览器里收藏着的翻译网址或者直接贴上百度的搜索框去查?这些方法固然可以,还很常见,但如果 ...

  9. [label][Smarty]Smarty使用心得

    Smarty模板引擎,使用smarty好处就是可以实现页面缓存,从而加快了初始化之后的页面访问速度. 某种程度上,smarty模板确保了template页面的代码整洁,避免了HTML标记与PHP的混合 ...

  10. TSQL--验证身份证是否有效

    /****** Object: UserDefinedFunction [dbo].[udf_IsvalidIDCard] Script Date: 02/27/2014 16:03:20 ***** ...