tests

package
v0.0.0-...-ff5ac03 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BlackBoxTestSuit

func BlackBoxTestSuit(t *testing.T, fn HandlerGenFn,
	config config.DatabaseList,
	gens table.GeneratorList,
	cleaner DataCleaner,
	tester Tester, isFasthttp ...bool)

BlackBoxTestSuit 通用黑盒测试套件 参数:

  • t: 测试对象,用于测试断言和报告
  • fn: 处理器生成函数,用于创建 HTTP 处理器
  • config: 数据库配置列表
  • gens: 表生成器列表(可选,用于自定义表)
  • cleaner: 数据清理函数,用于清理和初始化测试数据
  • tester: 测试函数,用于执行具体的测试逻辑
  • isFasthttp: 可变参数,是否使用 FastHTTP 框架(默认为 false)

说明:

该函数提供通用的黑盒测试框架,支持多种 Web 框架和数据库。
执行流程:
1. 调用 cleaner 函数清理和初始化测试数据
2. 根据 isFasthttp 参数选择测试框架(FastHTTP 或标准 HTTP)
3. 创建 httpexpect 客户端并执行测试

支持的框架:

  • 标准框架(Gin、Echo、Chi 等):使用 httpexpect.NewBinder
  • FastHTTP 框架:使用 httpexpect.NewFastBinder

使用场景:

  • 编写自定义测试套件
  • 测试自定义表和功能
  • 集成第三方框架

使用示例:

func TestMyCustomTest(t *testing.T) {
    BlackBoxTestSuit(t, gin.NewHandler, myConfig, myGenerators, myCleaner, myTester)
}

func BlackBoxTestSuitOfBuiltInTables

func BlackBoxTestSuitOfBuiltInTables(t *testing.T, fn HandlerGenFn, config config.DatabaseList, isFasthttp ...bool)

BlackBoxTestSuitOfBuiltInTables 内置表黑盒测试套件 参数:

  • t: 测试对象,用于测试断言和报告
  • fn: 处理器生成函数,用于创建 HTTP 处理器
  • config: 数据库配置列表
  • isFasthttp: 可变参数,是否使用 FastHTTP 框架(默认为 false)

说明:

该函数是内置表黑盒测试的便捷包装器,调用通用的 BlackBoxTestSuit 函数。
使用 Cleaner 函数清理和初始化测试数据,使用 common.Test 函数执行测试。

测试内容:

  • 认证测试(登录、登出)
  • 权限管理测试(增删改查)
  • 角色管理测试(增删改查、权限分配)
  • 管理员管理测试(增删改查、角色分配)
  • 菜单管理测试(增删改查、层级管理)
  • 操作日志测试(记录查询)

使用示例:

func TestMyTest(t *testing.T) {
    BlackBoxTestSuitOfBuiltInTables(t, gin.NewHandler, myConfig)
}

func Cleaner

func Cleaner(config config.DatabaseList)

Cleaner 清理测试数据并插入初始测试数据 参数:config - 数据库配置列表 说明:

该函数执行以下操作:
1. 安全检查:验证数据库名称或 DSN 包含 "test" 字符串,防止误操作生产数据库
2. 清理数据:删除所有测试表中的数据
3. 重置自增 ID:根据数据库类型重置自增序列
4. 插入初始数据:插入测试所需的初始用户、角色、权限、菜单等数据

测试表列表:

  • goadmin_users: 用户表
  • goadmin_user_permissions: 用户权限关联表
  • goadmin_session: 会话表
  • goadmin_roles: 角色表
  • goadmin_role_users: 角色用户关联表
  • goadmin_role_permissions: 角色权限关联表
  • goadmin_role_menu: 角色菜单关联表
  • goadmin_permissions: 权限表
  • goadmin_operation_log: 操作日志表
  • goadmin_menu: 菜单表

初始数据:

  • 用户:admin(管理员)、operator(操作员)
  • 角色:Administrator(管理员)、Operator(操作员)
  • 权限:All permission(所有权限)、Dashboard(仪表板)
  • 菜单:Dashboard、Admin、Users、Permission、Menu、Operation log、User、test2 menu

数据库支持:

  • MySQL: 使用 ALTER TABLE ... AUTO_INCREMENT = 1 重置自增
  • PostgreSQL: 使用 ALTER SEQUENCE ... RESTART WITH 1 重置序列
  • SQLite: 使用 update sqlite_sequence set seq = 0 重置序列
  • MSSQL: 使用 DBCC CHECKIDENT (... RESEED, 0) 重置标识

注意事项:

  • 如果数据库名称或 DSN 不包含 "test",函数会 panic
  • 该函数会修改数据库内容,确保使用测试数据库
  • 密码使用 bcrypt 加密,admin 密码为 "admin",operator 密码为 "operator"

Types

type DataCleaner

type DataCleaner func(config config.DatabaseList)

DataCleaner 数据清理函数类型 描述:

定义了数据清理函数的类型签名,用于清理和初始化测试数据

参数:

  • config: 数据库配置列表

使用示例:

func myCleaner(config config.DatabaseList) {
    // 清理和初始化测试数据
}

type FasthttpHandlerGenFn

type FasthttpHandlerGenFn func(config config.DatabaseList, gens table.GeneratorList) fasthttp2.RequestHandler

FasthttpHandlerGenFn FastHTTP 处理器生成函数类型 描述:

定义了 FastHTTP 处理器生成函数的类型签名,用于创建 FastHTTP 请求处理器

参数:

  • config: 数据库配置列表
  • gens: 表生成器列表

返回值:

  • fasthttp2.RequestHandler: FastHTTP 请求处理器

使用示例:

func myFastHandler(config config.DatabaseList, gens table.GeneratorList) fasthttp.RequestHandler {
    return func(ctx *fasthttp.RequestCtx) {
        // 处理请求
    }
}

type HandlerGenFn

type HandlerGenFn func(config config.DatabaseList, gens table.GeneratorList) http.Handler

HandlerGenFn 处理器生成函数类型 描述:

定义了 HTTP 处理器生成函数的类型签名,用于创建 HTTP 处理器

参数:

  • config: 数据库配置列表
  • gens: 表生成器列表

返回值:

  • http.Handler: HTTP 处理器

使用示例:

func myHandler(config config.DatabaseList, gens table.GeneratorList) http.Handler {
    r := gin.Default()
    // 配置路由
    return r
}

type Tester

type Tester func(e *httpexpect.Expect)

Tester 测试函数类型 描述:

定义了测试函数的类型签名,用于封装具体的测试逻辑

参数:

  • e: httpexpect.Expect 对象,用于 HTTP 请求和断言

使用示例:

func myTest(e *httpexpect.Expect) {
    e.GET("/admin").Expect().Status(http.StatusOK)
}

Directories

Path Synopsis
Package common 提供GoAdmin框架的通用测试函数
Package common 提供GoAdmin框架的通用测试函数
frameworks
chi
gear
Package gear 提供 GoAdmin 在 Gear Web 框架下的适配器实现
Package gear 提供 GoAdmin 在 Gear Web 框架下的适配器实现
gf
Package gf 提供 GoAdmin 在 GoFrame Web 框架下的适配器实现
Package gf 提供 GoAdmin 在 GoFrame Web 框架下的适配器实现
gf2
Package gf 提供 GoAdmin 在 GoFrame2 Web 框架下的适配器实现
Package gf 提供 GoAdmin 在 GoFrame2 Web 框架下的适配器实现
gin
Package gin 提供 GoAdmin 在 Gin Web 框架下的适配器实现
Package gin 提供 GoAdmin 在 Gin Web 框架下的适配器实现
gofiber
Package gofiber 提供 GoAdmin 在 GoFiber Web 框架下的适配器实现
Package gofiber 提供 GoAdmin 在 GoFiber Web 框架下的适配器实现
gorilla
Package gorilla 提供 GoAdmin 在 Gorilla Mux Web 框架下的适配器实现
Package gorilla 提供 GoAdmin 在 Gorilla Mux Web 框架下的适配器实现
iris
Package iris 提供 GoAdmin 在 Iris Web 框架下的适配器实现
Package iris 提供 GoAdmin 在 Iris Web 框架下的适配器实现
nethttp
Package nethttp 提供 GoAdmin 在 Go 标准库 net/http 下的适配器实现
Package nethttp 提供 GoAdmin 在 Go 标准库 net/http 下的适配器实现
Package tables 提供数据库表模型的定义和配置
Package tables 提供数据库表模型的定义和配置
Package web 提供 Web 页面测试的辅助工具
Package web 提供 Web 页面测试的辅助工具

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL