我正面临一个问题,我再也没有解决方法的想法。
我需要测试由数据库直接查询返回的数据。
在执行TestCase期间,django.db.connection.cursor()
从主数据库而不是从测试数据库返回数据,其中包含为此测试准备的夹具。
我尝试同时使用 TestCase 和 TransactionalTestCase 。 我尝试调试,检查变量值,发现连接确实指向测试数据库。
您知道为什么它要从主数据库返回数据吗? Django是否有将主数据库中的数据复制到为测试目的而创建的数据库的情况?
我正在使用:Python 3.6.5
,Django 2.1
,pytest 4.6.3
,pytest-django 3.5
预先感谢您的支持。
跟进
亲爱的
仅当尝试在测试用例中使用perform custom raw SQL Query directly时才会出现该问题。 Retrieving objects通过标准Django QuerySets可以正常工作。
您是否知道为什么在测试执行期间这种从db检索数据的特定方法不起作用?
答案 0 :(得分:0)
我在Django文档中发现了an answer:
如果您的代码在编译模块时尝试访问数据库,则这将在建立测试数据库之前发生,可能会导致意外结果。
还是-如果您知道在执行原始sql查询时有什么方法可以避免影响生产数据的测试,我很想知道如何做。