我不明白如何测试我的存储库。
我想确保我已经将对象及其所有参数保存到数据库中,并且当我执行SQL语句时,我确实收到了我应该得到的结果。
但是,我不能在unittest case的setUp方法中重复创建“CREATE TABLE test_table”,因为它会被创建多次(同一testcase的测试是并行运行的)。因此,只要我在同一类中创建了需要在同一表上工作的2个方法,它就无法正常工作(表名称冲突)。
同样,我也不能在setUpModule中放置“CREATE TABLE test_table”,因为现在该表只被创建一次,但由于测试是并行运行的,没有任何防止将同一对象多次插入我的表中的机制,这会破坏某些字段的唯一性约束。
同样,我也不能在每个方法中使用“CREATE SCHEMA some_random_schema_name”,因为我需要全局“SET search_path TO ...”给定数据库,因此每个并行运行的方法都会受到影响。
我唯一能想到的办法是为每个测试创建“CREATE DATABASE”,并带有唯一名称,并为每个数据库建立单独的连接。这看起来非常浪费资源。有更好的方法吗?
此外,我也不能使用SQLite内存,因为我需要测试PostgreSQL。
我想确保我已经将对象及其所有参数保存到数据库中,并且当我执行SQL语句时,我确实收到了我应该得到的结果。
但是,我不能在unittest case的setUp方法中重复创建“CREATE TABLE test_table”,因为它会被创建多次(同一testcase的测试是并行运行的)。因此,只要我在同一类中创建了需要在同一表上工作的2个方法,它就无法正常工作(表名称冲突)。
同样,我也不能在setUpModule中放置“CREATE TABLE test_table”,因为现在该表只被创建一次,但由于测试是并行运行的,没有任何防止将同一对象多次插入我的表中的机制,这会破坏某些字段的唯一性约束。
同样,我也不能在每个方法中使用“CREATE SCHEMA some_random_schema_name”,因为我需要全局“SET search_path TO ...”给定数据库,因此每个并行运行的方法都会受到影响。
我唯一能想到的办法是为每个测试创建“CREATE DATABASE”,并带有唯一名称,并为每个数据库建立单独的连接。这看起来非常浪费资源。有更好的方法吗?
此外,我也不能使用SQLite内存,因为我需要测试PostgreSQL。