#sqlx #database-access #unit-testing #integration-tests #creation #variables #uuid

sqlx-database-tester

用于创建具有 sqlx 数据库支持的单元/集成测试的库

7 个不稳定版本 (3 个破坏性更新)

0.4.2 2022年9月6日
0.4.1 2022年9月5日
0.4.0 2022年6月30日
0.3.2 2022年7月5日
0.1.1 2021年8月20日

#337 in 测试

Download history 113/week @ 2024-03-12 193/week @ 2024-03-19 194/week @ 2024-03-26 139/week @ 2024-04-02 97/week @ 2024-04-09 77/week @ 2024-04-16 117/week @ 2024-04-23 78/week @ 2024-04-30 96/week @ 2024-05-07 61/week @ 2024-05-14 58/week @ 2024-05-21 158/week @ 2024-05-28 127/week @ 2024-06-04 82/week @ 2024-06-11 55/week @ 2024-06-18 51/week @ 2024-06-25

每月下载量368
用于 3 crates

AGPL-3.0

19KB
112

SQLX 数据库测试器

pipeline status coverage report docs main

此库使得为每个测试用例创建具有对唯一数据库访问的 Rust 测试用例成为可能。

每个数据库都使用生成的 UUID v4 数据库名称创建,以防止测试用例之间发生冲突。

请求的名称的 sqlx 数据库池变量被暴露到测试函数作用域。

如果需要,宏允许在测试函数中创建和暴露多个数据库。

用法

  • 对于数据库连接本身,设置环境变量 DATABASE_URL 为适当的 postgresql 连接 URI。如果存在 .env,它将通过 dotenv crate 使用。(如果它包含数据库名称,它将用作临时数据库名称前缀,形式为 <PFX>_<UUID>)。
  • 确保连接到数据库的用户有创建新数据库的权限。
  • 您必须指定此 crate 的其中一个功能,runtime-actixruntime-tokio 以使用相应的运行时。
#[sqlx_database_tester::test(
    pool(variable = "default_migrated_pool"),
    pool(variable = "migrated_pool", migrations = "./test_migrations"),
    pool(variable = "empty_db_pool", 
         transaction_variable = "empty_db_transaction", 
         skip_migrations),
)]
async fn test_server_start() {
    let migrated_pool_tables = sqlx::query!("SELECT * FROM pg_catalog.pg_tables")
        .fetch_all(&migrated_pool)
        .await
        .unwrap();
    let empty_pool_tables = sqlx::query!("SELECT * FROM pg_catalog.pg_tables")
        .fetch_all(&empty_db_pool)
        .await
        .unwrap();
    println!("Migrated pool tables: \n {:#?}", migrated_pool_tables);
    println!("Empty pool tables: \n {:#?}", empty_pool_tables);
}

宏属性

  • variable:要暴露到函数作用域的 PgPool 变量(必需)
  • transaction_variable:如果存在,则开始一个新的事务,并将此名称的变量暴露到函数作用域
  • migrations:指定池的SQLX迁移目录的路径(如果省略,则回退到默认的 ./migrations 目录)
  • skip_migrations:如果存在,则不运行任何迁移

预提交使用方法

  1. 如果没有安装,请使用您的包管理器安装,或者使用以下命令安装:pip install --user pre-commit
  2. 运行pre-commit autoupdate来更新预提交配置,以使用最新模板
  3. 运行pre-commit install将预提交钩子安装到您的本地环境

知名

此项目是Famedly源代码的一部分。

我们认为医疗保健软件应该是开源的,因此我们将在gitlab.com/famedly上发布我们的大部分源代码。

请阅读CONTRIBUTING.md以了解我们的行为准则和向我们提交拉取请求的流程。

关于此项目的许可信息,请参阅仓库中的LICENSE文件。

如果您编译我们提供的开源软件以开发您自己的移动、桌面或嵌入式应用程序,并使该应用程序连接到我们的服务器进行任何目的,则必须同意我们的服务条款。简而言之,如果您选择连接到我们的服务器,以下限制适用:

  • 您同意不要更改开源软件连接和与我们的服务器交互的方式
  • 您同意不要削弱开源软件的任何安全功能
  • 您同意不使用开源软件收集数据
  • 您同意不使用我们的服务器存储除软件的预期和原始功能以外的数据
  • 您承认您对您软件的所有更新负有全部责任

不授予Famedly商标及其相关标志的许可,所有这些将继续由Famedly GmbH独家拥有。未经Famedly GmbH明确事先书面同意,禁止使用Famedly商标及其相关标志。

有关更多信息,请参阅Famedly.com或通过[email protected]联系我们

依赖关系

~20–31MB
~581K SLoC