将非应用程序测试添加到执行python manage.py测试时运行的测试

问题描述 投票:0回答:1

我的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测试,以便单个命令测试我的项目的整个套件。我无法在文档中找到任何内容或搜索谷歌或此处如何做到这一点。有任何想法吗?

谢谢你的帮助!!

- - 额外细节 - -

Directory structure

├── 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

Command to execute tests

python manage.py test

......执行......

nosetests --with-coverage --cover-package=app1,app2, utils --cover-html --cover-erase --logging-filter='selenium' --verbosity=1

并且覆盖率报告显示app1和app2的所有测试都已执行,但不是针对utils的测试

python django django-testing
1个回答
0
投票

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吗?

© www.soinside.com 2019 - 2024. All rights reserved.