我的Django项目有几个应用程序,每个都有各自的测试。它还有一个utils
包,有自己的测试。
包utils
位于与manage.py相同级别的文件夹中,其测试位于名为test_xxx.py的文件中名为tests的子文件夹中
当我运行python manage.py test
时,Django会对我项目中的所有应用程序运行所有测试,但它不会运行utils
包的测试。我可以通过运行utils
来运行python manage.py test utils
包的测试。
我想要做的是,当我运行python manage.py test
时,也运行utils测试,以便单个命令测试我的项目的整个套件。我无法在文档中找到任何内容或搜索谷歌或此处如何做到这一点。有任何想法吗?
谢谢你的帮助!!
- - 额外细节 - -
├── project
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── ...
├── app1
│ ├── __init__.py
│ ├── urls.py
│ ├── views.py
│ ├── ...
│ └── tests
│ ├── test_views.py
│ └── test_models.py
├── app2
│ ├── __init__.py
│ ├── urls.py
│ ├── views.py
│ ├── ...
│ └── tests
│ ├── test_views.py
│ └── test_models.py
└── utils
├── __init__.py
├── code.py
└── tests
└── test_utils.py
python manage.py test
......执行......
nosetests --with-coverage --cover-package=app1,app2, utils --cover-html --cover-erase --logging-filter='selenium' --verbosity=1
并且覆盖率报告显示app1和app2的所有测试都已执行,但不是针对utils的测试
Django使用DiscoverRunner
来运行你的测试工具。正如你在这里看到的:https://docs.djangoproject.com/en/2.1/topics/testing/advanced/#defining-a-test-runner
第一个选项是:
top_level可用于指定包含顶级Python模块的目录。通常Django可以自动解决这个问题,所以没有必要指定这个选项。如果指定,通常应该是包含manage.py文件的目录。
因此,您的测试应由测试工具运行,因为它们位于manage.py
的同一文件夹中。你在test文件夹中添加了__init__.py
吗?