문제

I'm setting up a directory structure for my Django app to separate functional and unit tests. I am using nose as the test runner for my Django project.

At the root of the Django project, I have a folder called "tests" that has this structure:

tests
├── __init__.py
├── functional
│   ├── __init__.py
└── unit
    ├── __init__.py
    ├── data.py
    ├── tests.py

If I want to run just the unit tests, should I not be able to use the following from the project root:

$ nosetests tests.unit

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

As you can see, this doesn't find the tests in the tests.py file.

However, when I run using the directory structure, the tests are found as they should be:

$ nosetests tests/unit/
E
# .. Some errors I expected because settings are not initialized when called this way
-----------------
Ran 1 test in 0.001s

FAILED (errors=1)

What am I missing? My main issue is that I have a setup function in tests.unit.__init__.py that should be called for creating the data in the test DB for the upcoming tests.

Thanks

도움이 되었습니까?

해결책

This all depends on what kind of code is in tests/unit/__init__.py

When you say

nosetests tests.unit

You are pointing to unit/__init__.py not the directory unit/ thus if you had no tests in your __init__.py module then nothing would be run. So it is understandable when you say you used the directory path and then your tests started working.

You mention

What am I missing? My main issue is that I have a setup function in tests.unit.init.py that should be called for creating the data in the test DB for the upcoming tests.

It is likely that although you have a setup function in __init__.py you may have not ever imported your test functions into __init__.py

One quick fix to this would be to add this line in __init__.py

from tests.unit.tests import *

That said it is really not very wise to be putting any code in __init__.py at all and if you have code that returns some kind of configuration data I would recommend creating a new library module with functions that will return configuration data to your tests

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top