代码之家  ›  专栏  ›  技术社区  ›  Buck

为什么Django测试无法识别我的应用程序测试?[副本]

  •  3
  • Buck  · 技术社区  · 11 年前

    背景:

    我有以下django项目设置:

    >TopLevel:
    >  - App1:
    >      * models.py
    >      * forms.py
    >      * views.py
    >      * __init__.py
    >      * Tests/
    >        * __init__.py
    >        * test_simple.py
    

    以下是test_simple.py中的代码:

    from django.test import TestCase
    
    
    class SimpleTest(TestCase):
        def test_basic_addition(self):
            """
            Tests that 1 + 1 always equals 2.
            """
            self.assertEqual(1 + 1, 2)
    

    现在,当我跑步时:

    > python manage.py test app1
    

    我得到以下输出:

    >Creating test database for alias 'default'...
    >
    >----------------------------------------------------------------------
    >Ran 0 tests in 0.000s
    >
    >OK
    >Destroying test database for alias 'default'...
    

    但是,如果我使用以下项目结构:

    >TopLevel:
    >  - App1:
    >      * models.py
    >      * forms.py
    >      * views.py
    >      * __init__.py
    >      * tests.py
    

    其中tests.py具有以下代码:

    从django.test导入测试用例
    
    
    类SimpleTest(测试用例):
    def test_basic_add(自身):
    """
    测试1+1总是等于2。
    """
    self.assertEqual(1+1,2)(自身资产相等)
    

    现在,当我跑步时:

    >python管理.py测试应用程序1
    

    我明白:

    >Creating test database for alias 'default'...
    >.
    >----------------------------------------------------------------------
    >Ran 1 test in 0.002s
    >
    >OK
    >Destroying test database for alias 'default'...
    

    问题:

    为什么Django不能识别我的测试目录&&为什么Django的单元测试结构不会选择tests/中列出的任何测试来运行?

    3 回复  |  直到 11 年前
        1
  •  2
  •   alecxe    11 年前

    睡个好觉,甚至不用考虑测试发现的一个选择是使用 nose 。它有很多功能,其中之一就是 automatic tests discovery .

    有一个名为 django_nose 这将帮助您将django项目与nose集成:

    特征

    Django测试中所有的优点,比如。。。

    • ...
    • 消除了将所有测试导入的需要 tests/__init__.py 。这不仅节省了繁忙的工作,还消除了意外跟踪测试类的可能性。
    • ...

    希望能有所帮助。

        2
  •  2
  •   sagarchalise    11 年前

    您将需要更改 Tests tests 并将每个测试导入到 tests/__init__.py 直到django 1.5 AFAIK。还有一个 test runner 这将以unittest2发现的方式工作。此功能已集成到django1.6中。

        3
  •  1
  •   ambi    11 年前

    看看: running tests in Django

    测试发现基于内置的单元测试模块测试发现。默认情况下,这将在当前工作目录下任何名为test*.py的文件中发现测试。