And*_*res 3 python testing django nose celery
我正在寻找一种在django测试期间运行完整芹菜设置的方法,在另一个SO问题中询问
在考虑之后,我想我可以解决运行单元测试(它更多的是集成测试),其中我对主Django(开发)数据库运行测试脚本.有没有办法编写单元测试,用Nose运行它们并对主数据库这样做?我想这将是关于django设置告诉Nose(或其他任何框架)的问题.
我看过django-nose但是找不到告诉它使用主数据库而不是测试数据库的方法.
我不知道鼻子,但这里是如何运行与django(1.6)单元测试的现有数据库.
from django.test.runner import DiscoverRunner
from django.db import transaction
class ExistingDBTestRunner(DiscoverRunner):
def run_tests(self, test_labels, extra_tests=None, **kwargs):
self.setup_test_environment()
suite = self.build_suite(test_labels, extra_tests)
#old_config = self.setup_databases()
result = self.run_suite(suite)
#self.teardown_databases(old_config)
self.teardown_test_environment()
return self.suite_result(suite, result)
Run Code Online (Sandbox Code Playgroud)
然后在settings.py中
if 'test' in sys.argv:
TEST_RUNNER = '<?>.ExistingDBTestRunner'
# alternative db settings?
Run Code Online (Sandbox Code Playgroud)
在较旧版本的django中会有所不同.此外,您可能需要覆盖测试用例中的_fixture_setup和_fixture_teardown才能通过.
上面的代码将连接到一个预先存在的数据库,但由于每个测试都包含在一个事务中,因此其他连接(如芹菜工作者)无法使用这些更改.禁用事务的最简单方法是从而继承unittest.TestCase而不是django.test.TestCase.