| Crates.io | tiberius_db_tester |
| lib.rs | tiberius_db_tester |
| version | 0.1.0 |
| created_at | 2025-03-05 08:19:07.654248+00 |
| updated_at | 2025-03-05 08:19:07.654248+00 |
| description | A tool to test tiberius sql server client, it automatically creates a new database and migrates the data, and then deletes the database after the test |
| homepage | |
| repository | https://github.com/vincentzreo/tiberius_db_tester |
| max_upload_size | |
| id | 1578484 |
| size | 47,299 |
A Rust library for SQL Server database testing based on the Tiberius driver.
Add the dependency to your Cargo.toml:
[dependencies]
tiberius_db_tester = "0.1.0"
use tiberius_db_tester::DBTester;
#[tokio::test]
async fn my_database_test() {
// Create a test database and execute migration script
let dbt = DBTester::new(
"localhost", // hostname
1433, // port
"sa", // username
"YourPassword", // password
"migrations/init.sql" // migration script path
);
// Get database client
let mut client = dbt.get_client().await;
// Execute test query
let query = tiberius::Query::new("SELECT * FROM your_table");
let result = query.query(&mut client).await.unwrap();
let rows = result.into_first_result().await.unwrap();
// Assert
assert_eq!(rows.len(), 2);
// After the test ends, dbt will be automatically destroyed and the database will be cleaned up
}
Migration scripts are regular SQL files, for example:
-- migrations/init.sql
CREATE TABLE test (
id INT PRIMARY KEY,
name NVARCHAR(100) NOT NULL
);
INSERT INTO test (id, name) VALUES (1, 'Test 1');
INSERT INTO test (id, name) VALUES (2, 'Test 2');
DBTester::new() creates a randomly named database (format: testdb_uuid)get_client() method to get a configured database connectionDBTester instance is destroyed, it:
master databaseALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATE to close all existing connectionsMIT
Welcome to submit issue reports and pull requests!
一个用于SQL Server数据库测试的Rust工具库,基于Tiberius驱动。
在Cargo.toml中添加依赖:
[dependencies]
tiberius_db_tester = "0.1.0"
use tiberius_db_tester::DBTester;
#[tokio::test]
async fn my_database_test() {
// 创建测试数据库并执行迁移脚本
let dbt = DBTester::new(
"localhost", // 主机名
1433, // 端口
"sa", // 用户名
"YourPassword", // 密码
"migrations/init.sql" // 迁移脚本路径
);
// 获取数据库客户端
let mut client = dbt.get_client().await;
// 执行测试查询
let query = tiberius::Query::new("SELECT * FROM your_table");
let result = query.query(&mut client).await.unwrap();
let rows = result.into_first_result().await.unwrap();
// 进行断言
assert_eq!(rows.len(), 2);
// 测试结束后,dbt会被自动销毁,数据库也会被清理
}
迁移脚本是普通的SQL文件,例如:
-- migrations/init.sql
CREATE TABLE test (
id INT PRIMARY KEY,
name NVARCHAR(100) NOT NULL
);
INSERT INTO test (id, name) VALUES (1, '测试1');
INSERT INTO test (id, name) VALUES (2, '测试2');
DBTester::new()创建一个随机命名的数据库(格式为testdb_uuid)get_client()方法来获取已配置好的数据库连接DBTester实例被销毁时,它会:
master数据库ALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATE关闭所有现有连接MIT
欢迎提交问题报告和拉取请求!