如何测试在数据库中使用UDF的Django站点?

时间:2011-04-17 01:23:39

标签: django postgresql django-unittest

我有一个django项目,它使用带有多个UDF的postgres数据库。 UDF是用plpythonu编写的。由于plpyhtonu是一种不受信任的语言,因此只有数据库超级用户才能使用它来创建UDF。这带来了严重的问题,因为我无法在测试套件中以编程方式创建它们。现在我看到两个选项:

  1. 修改django.db.backends.creation._create_test_db以从模板创建测试数据库,该模板已经加载了我的UDF。这似乎很难维护。
  2. 使用MD5身份验证创建超级用户,并使用psycopg2在测试套件中加载UDF。这似乎不安全。
  3. 我可以用这种方式做得不那么糟糕吗?

    感谢。

2 个答案:

答案 0 :(得分:1)

我不知道PG UDF模型,只知道MySQL和SQLite模型。其他一些解决办法可能是:

  1. 创建一个仅用于测试的PG实例,隔离以便潜在的安全问题不会成为问题。毕竟数据库很便宜。
  2. 如果UDF很简单(或测试数据大小使它们变得简单),那么在SQLite中重新创建它们并使用该数据库进行测试。这假设您不需要将plpython功能作为项目的一部分进行测试。
  3. 如果UDF功能比项目的其余部分稳定得多,则将UDF代码拆分为自己的子项目,对于其余代码,假设UDF将存在。至少这将使得大部分代码都可以自动化,只有UDF代码需要手动干预才能指定密码。

答案 1 :(得分:0)

我和#1一起去了。这不太理想,但工作正常。