将非应用程序测试添加到在执行python manage.py test

时间:2018-08-28 21:37:33

标签: python django django-testing

我的Django项目有几个应用程序,每个应用程序都有各自的测试。它还有一个utils程序包,它具有自己的测试。

软件包utils位于与manage.py处于同一级别的文件夹中,其测试位于名为test_xxx.py的文件的名为test的子文件夹中

当我运行python manage.py test时,Django会为项目中的所有应用程序运行所有测试,但不会运行utils包的测试。我可以通过运行utils来运行python manage.py test utils软件包的测试。

我想做的是,当我运行python manage.py test时也要运行对utils的测试,以便单个命令可以测试项目的整个套件。我无法在文档中找到任何内容,也无法搜索google或此处的操作方法。有什么想法吗?

感谢您的帮助!

---其他详细信息---

目录结构

├── 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的测试未执行

1 个答案:

答案 0 :(得分: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的同一文件夹中。您是否在测试文件夹中添加了__init__.py