postgres 数据库的自动化测试

Automation testing for postgres database

我正在测试在 postgres 中创建 databases/tables 的 api。对于自动化测试,我一直在思考,有一个设置方法可以创建一个数据库 tables 设置并填充所需的数据 (1000 entries/rows).

我在想一个优雅的方式来做到这一点?除了 编写循环超过 1000 次的代码并将存储在 csv 中的数据写入 postgres 之外的任何想法 table?

老实说,CSV、XML 或任何其他结构化格式对我来说都不错。您有什么理由 不想 这样做吗?使用 pg_dump command to export data from an existing DB and using pg_restore 也是一个不错的选择。

您关于编写代码来生成数据的其他想法也不错。编写代码的好处是您的测试不会耦合到数据文件。

此外,我会看一下 H2 数据库,因为它具有 PostgreSQL 兼容模式,您实际上可以将其嵌入到 unit/integration 测试中,而不是依赖 PostgreSQL 服务器在您的测试中设置和配置。我们使用 H2 来测试我们的 PostgreSQL 应用程序,它运行良好。缺点是您不能 100% 确定仅仅因为您的测试通过了 H2,它就会针对 PostgreSQL。

如果您真的更喜欢使用 postgresql(而不是 H2)进行测试,您可以使用 liquibase。它是一个数据库模式管理工具,支持(除其他外)从 csv (http://www.liquibase.org/documentation/changes/load_data.html) 批量加载数据。

如果您的应用程序使用它,它还提供 spring 集成。