【问题标题】:How to run django unit tests within vim?如何在 vim 中运行 django 单元测试?
【发布时间】:2013-02-19 20:27:05
【问题描述】:

我一直在为 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 << -

【问题讨论】:

    标签: django vim integration-testing nose


    【解决方案1】:

    你在使用 django 内置的unittest吗?

    from django.utils import unittest

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

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

    【讨论】:

    • 我正在使用您提到的内置单元测试,但我的测试运行程序 (qtpy) 使用nosetest 运行它们,因此 django 不管理每个测试的设置/拆卸。我正在寻找一个可以与 django 一起使用的插件(vim 插件/python 或 ruby​​ 支持很好)——或者——以某种方式使用这个与 manage.py 一起使用的 qtpy runner w/django
    【解决方案2】:

    我终于找到了一个用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'
    

    【讨论】:

      猜你喜欢
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      相关资源
      最近更新 更多