#测试框架推荐# test4j,数据库测试

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: # 背景 后端都是操作DB的,这块的自动化测试校验的话,是需要数据库操作的,当然可以直接封装方法来操作数据,那么有没有开源框架支持数据操作,让我们关注写sql语句?或者帮我们做mysql的断言呢?   # 介绍 test4j,github地址:https://github.

# 背景

后端都是操作DB的,这块的自动化测试校验的话,是需要数据库操作的,当然可以直接封装方法来操作数据,那么有没有开源框架支持数据操作,让我们关注写sql语句?或者帮我们做mysql的断言呢?

 

# 介绍

test4j,github地址:https://github.com/test4j,看名字感觉还是公司的大神维护了一段时间的,膜拜大神,Orz

Test4J原名叫jTester,本来是发布在google上的一个开源项目,后来迁移到github,并且由于域名的缘故,更名为[Test4J]

Test4J是一个单元测试和业务流程测试框架,其基本功能包括如下:

单元测试功能

  • Fluent方式的断言,内置了大部分常用的断言语法,特别是对象反射断言功能尤其强大。
  • Junit和testNg语法扩展,使用@DataFrom方式扩展junit的数据驱动测试功能;@Group语法让junit支持分组测试;模块嵌入的方式让junit和testng支持功能扩展。
  • 集成jMockit框架,让mock更自由自在。
  • 对象自动填充功能,反射工具。

集成测试工具包

  • 支持Spring集成测试,spring容器可以mock对象,自定义对象无缝集成。
  • 数据库测试支持,使用DataMap对象,Json数据准备数据,或者验证数据,同时支持数据库数据的Fluent断言。

业务驱动测试工具包

  • 支持编写可读的用例,并在用例中嵌入测试用数据,框架自动转换为可执行代码。
  • 支持用例步骤的重复利用,简化用例编写难度。

 

# 重点

重点讲的是数据库测试这块

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=mysql
database.url=jdbc:mysql://localhost/presentationtdd?characterEncoding=UTF8
database.userName=root
database.password=password
database.schemaNames=presentationtdd
database.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. 断言结果友好,可以提示到哪个字段错误;

虽千万人,吾往矣!
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
50 8
|
14天前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
21天前
|
人工智能 监控 测试技术
探索软件测试中的自动化框架选择与优化策略####
【10月更文挑战第21天】 本文深入剖析了软件测试领域面临的挑战,聚焦于自动化测试框架的选择与优化这一核心议题。不同于传统摘要的概述方式,本文将以一个虚拟案例“X项目”为线索,通过该项目从手动测试困境到自动化转型的成功历程,生动展现如何根据项目特性精准匹配自动化工具(如Selenium、Appium等),并结合CI/CD流程进行深度集成与持续优化,最终实现测试效率与质量的双重飞跃。读者将跟随“X项目”团队的视角,直观感受自动化框架选型的策略性思考及实践中的优化技巧,获得可借鉴的实战经验。 ####
30 0
|
4天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
28 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
9天前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
32 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
18天前
|
Java 测试技术 API
探索软件测试中的自动化框架选择####
在当今快节奏的软件开发周期中,自动化测试已成为确保产品质量与加速产品迭代的关键策略。本文深入剖析了自动化测试的核心价值,对比分析了市场上主流的自动化测试框架,旨在为项目团队提供选型时的考量因素及实践指南,助力高效构建适应未来变化的自动化测试体系。 ####
|
13天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
16天前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
41 7
|
14天前
|
数据管理 jenkins 测试技术
自动化测试框架的设计与实现
在软件开发周期中,测试是确保产品质量的关键步骤。本文通过介绍自动化测试框架的设计原则、组件构成以及实现方法,旨在指导读者构建高效、可靠的自动化测试系统。文章不仅探讨了自动化测试的必要性和优势,还详细描述了框架搭建的具体步骤,包括工具选择、脚本开发、执行策略及结果分析等。此外,文章还强调了持续集成环境下自动化测试的重要性,并提供了实际案例分析,以帮助读者更好地理解和应用自动化测试框架。
|
14天前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
27 4