3

我一直在为 vim 使用一个名为qtpy的鼻子测试运行器,当我的测试很简单 unittest.TestCase 时一切都很好,但是当我需要一个数据库时,很明显鼻子测试运行器在运行之前不会同步数据库。

是否存在会在每次运行之前同步数据库的测试运行程序?如果不是,人们在运行更像集成的 django 测试时如何解决这个问题?

如果重要的话,我正在使用模拟设置文件,所以我的 DJANGO_SETTINGS_MODULE 已设置。此外,创建了 sqlite db 文件并可供测试运行程序使用。但是当鼻子运行“django”测试时,它无法同步数据库并导致类似这样的结果

 23     return Database.Cursor.execute(self, query, params)
 24 DatabaseError: no such table: foo_bar
 25 -------------------- >> begin captured logging << --------------------
 26 django.db.backends: DEBUG: (0.001) CREATE TABLE ROLLBACK_TEST (X INT); args=()
 27 django.db.backends: DEBUG: (0.000) INSERT INTO ROLLBACK_TEST (X) VALUES (8); ar...
 28 django.db.backends: DEBUG: (0.000) SELECT COUNT(X) FROM ROLLBACK_TEST; args=()
 29 django.db.backends: DEBUG: (0.001) DROP TABLE ROLLBACK_TEST; args=()
 30 django.db.backends: DEBUG: (0.000) INSERT INTO "foo_bar" ("first", "last" ...
 31 --------------------- >> end captured logging << -
4

2 回答 2

1

你在使用 django 内置的unittest吗?

from django.utils import unittest

django unittest 会在运行每个测试之前自动删除和同步数据库

似乎您在运行测试并让它识别您的 django 项目和设置的方式上可能存在一些问题?如果你使用 django 的 unittest,你可以无缝地测试你的 django 项目

于 2013-03-05T15:18:38.097 回答
1

我终于找到了一个用 python 编写的与 django 一起使用的坚如磐石的 vim 插件。

https://github.com/JarrodCTaylor/vim-python-test-runner

它只需要在项目根目录下有一个配置文件(切换项目时无需反复修改 vimrc)

:e .vim-django

将您的每个应用程序名称放入逗号分隔列表中,以及您希望它们运行的​​设置(即 - test / dev / ci / etc)

{"app_name": "website", "environment": "test"}

上面的 django 应用程序只有一个已安装的应用程序(网站),我想使用测试设置运行所有内容。

您还需要使用鼻子作为测试运行器,因此请确保您在测试设置中有此设置

INSTALLED_APPS += ('django_nose', )
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
于 2013-09-05T14:04:57.970 回答