本文共 3106 字,大约阅读时间需要 10 分钟。
后端都是操作DB的,这块的自动化测试校验的话,是需要数据库操作的,当然可以直接封装方法来操作数据,那么有没有开源框架支持数据操作,让我们关注写sql语句?或者帮我们做mysql的断言呢?
test4j,github地址:https://github.com/test4j,看名字感觉还是公司的大神维护了一段时间的,膜拜大神,Orz
Test4J原名叫jTester,本来是发布在google上的一个开源项目,后来迁移到github,并且由于域名的缘故,更名为[Test4J]
Test4J是一个单元测试和业务流程测试框架,其基本功能包括如下:
重点讲的是数据库测试这块
1. 引入maven依赖
<dependency>
<groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.6.SEC02</version></dependency><dependency>
<groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version></dependency><dependency>
<groupId>org.test4j</groupId> <artifactId>test4j.testng</artifactId> <version>2.0.6</version></dependency><dependency> <groupId>org.test4j</groupId> <artifactId>test4j.integrated</artifactId> <version>2.0.6</version></dependency>
2. 配置test4j.properties文件
在resources目录新增test4j.properties文件
database.type=mysqldatabase.url=jdbc:mysql://localhost/presentationtdd?characterEncoding=UTF8database.userName=rootdatabase.password=passworddatabase.schemaNames=presentationtdddatabase.driverClassName=com.mysql.jdbc.Driver
3 . demo代码
package com.jwen.test;import org.test4j.testng.Test4J;import org.testng.annotations.Test;import java.util.Date;public class DataMapDemo extends Test4J { @Test public void datamaptest() { db.table("demo").clean().insert(1, new DataMap() { { this.put("name", "jwen"); } }).commit(); } @Test public void testEqMap() { db.table("demo").query().propertyEqMap(new DataMap() { { this.put("id", 4); this.put("name", "jwen1"); } }); } @Test public void insertMutiDate() { db.table("demo").clean().insert(5, new DataMap() { { this.put("id", DataGenerator.increase(100, 1)); this.put("name", DataGenerator.random(String.class)); this.put("email", new DataGenerator() { @Override public Object generate(int i) { return value("name") + "@163.com"; } }); this.put("day", new Object[]{ new Date(), "2018-03-03"}); } }).commit(); } //{"id":1,"name":"jwen","email":"jwen@163.com","day":"2018-8-08"} @Test public void insertDataByJsonString() { db.table("demo").clean().insert("{\"id\":1,\"name\":\"jwen\",\"email\":\"jwen@163.com\",\"day\":\"2018-8-08\"}").commit(); } @Test public void testExecute(){ }}
当然这都是一些基本操作
1. 使用过java的mybatis,python的SQLAlchemy,目前test4j的数据库这块更加简洁易懂
2. 支持断言,这个是很难得,我之前的测试思路把查询出来的结果变成json串,然后通过JsonAssert去断言;
3. 断言结果友好,可以提示到哪个字段错误;
虽千万人,吾往矣!转载地址:http://rtrdx.baihongyu.com/