Django 1.8 - 如何测试tests文件夹中的特定文件?

时间:2015-10-27 21:34:49

标签: python django django-unittest

这是我的目录

CMSApp/tests/test_page.py
CMSApp/tests/test_user.py
CMSApp/models.py
CMSApp/views.py

我只想测试test_page.py。我可以这样做:

python manage.py test CMSApp/tests

但这会测试test_page.pytest_user.py。当我尝试

python manage.py test CMSApp/tests/test_page

它说:

No module named CMSApp/tests/test_page

当我尝试时:

python manage.py test CMSApp/tests/test_page.py它说NoneType object is not iterable

3 个答案:

答案 0 :(得分:2)

python manage.py test CMSApp.tests.test_page

您需要在__init__.py目录中设置tests才能使其成为模块。

答案 1 :(得分:0)

python manage.py test tests.main.testMainPage.MainPageTests

如果tests和main是文件夹并需要 init .py文件,则testMainPage是main中的文件,MainPageTests是此文件的一个类。

树视图:

tests
├── __init__.py
├── main
│   ├── __init__.py
│   ├── testMainPage.py

MainPageTests类将保存所有测试 例如:

class MainPageTests(TestCase):
    def test_my_view(self):
    pass

答案 2 :(得分:0)

有几种方法可以仅运行特定的测试,如文档中的explained

  
# Run all the tests in the animals.tests module
$ ./manage.py test animals.tests

# Run all the tests found within the 'animals' package
$ ./manage.py test animals

# Run just one test case
$ ./manage.py test animals.tests.AnimalTestCase

# Run just one test method
$ ./manage.py test animals.tests.AnimalTestCase.test_animals_can_speak

# You can also provide a path to a directory to discover tests below that directory:

$ ./manage.py test animals/

# You can specify a custom filename pattern match using the -p (or --pattern)
# option, if your test files are named differently from the test*.py pattern:

$ ./manage.py test --pattern="tests_*.py"

我发现使用--pattern参数特别方便,您可以在其中仅提供测试文件名的唯一部分。例如,根据您的情况,您可以编写:

python manage.py test --pattern "*test_page*"

这样,您甚至不必查找测试文件的整个路径。