【发布时间】:2016-12-19 18:21:58
【问题描述】:
我正在尝试为我的 Django 应用程序中的异步方法编写一些单元测试。本质上,当用户执行某个 POST 时,此方法会启动,因此应用程序不会挂起。我要测试的是在运行时取消此请求的能力(在这种情况下通过 celery)。这样做的唯一问题是因为 Celery 独立于 Web 应用程序运行,它将结果推送到真实数据库,而不是由 Django 单元测试创建的测试数据库。所以我想知道的是我怎么能做类似的事情
Results.objects.get(id=some_id)
并告诉它指向实际的数据库。我已经尝试过以下方法:
Results.objects.using('default').get(id=some_id)
认为也许这会解决问题,但它没有找到结果(再次因为它将信息推送到实际数据库,而不是测试数据库)。我做了一些搜索,找到了这个链接: How do I run a unit test against the production database? 但这里的答案说“你不应该针对生产进行测试”。我完全理解这不是好的做法,但我需要访问实时数据库。一切都在虚拟机上运行,所以无论如何它都是一个测试数据库。有谁知道打到真实数据库的方法吗?
谢谢,
【问题讨论】:
-
你是如何开始你的芹菜工人的??
标签: python django unit-testing celery integration-testing