【发布时间】:2018-02-15 20:39:34
【问题描述】:
我不明白如何测试我的存储库。
我想确保我确实将对象及其所有参数保存到数据库中,并且当我执行我的 SQL 语句时,我真的收到了我应该得到的。
但是,我不能将 "CREATE TABLE test_table" 放在 unittest case 的 setUp 方法中,因为它会被创建多次(同一个测试用例的测试是并行运行的)。所以,只要我在需要在同一张表上工作的同一个类,它不会工作(表的名称冲突)
同样,我不能放"CREATE TABLE test_table"setUpModule,因为现在表只创建一次,但由于测试是并行运行的,没有什么可以阻止将同一个对象多次插入我的表中,这会破坏某个字段的唯一性约束。
同样,我不能在每个方法中都使用"CREATE SCHEMA some_random_schema_name",因为我需要为给定的数据库全局“SET search_path TO ...”,所以每个并行运行的方法都会受到影响。
我看到的唯一方法是为每个测试创建"CREATE DATABASE",并使用唯一的名称,并建立与每个数据库的个人连接。这看起来非常浪费。有没有更好的办法?
另外,我不能在内存中使用 SQLite,因为我需要测试 PostgreSQL。
【问题讨论】:
标签: python postgresql python-unittest