[Tutor] Best way to setup Unit Testing?

Srinivas Nyayapati shireenrao at gmail.com
Sun Jul 7 22:16:48 CEST 2013


I am tryng to figure out the best way to do Unit Testing for all my
projects going forward. I am using the unittest framework. For execution I
am executing the test cases by either directly using python or by using the
nose test runner. I found the following 3 types of how this can be setup.

Type 1
======

The unit tests are located in the same package as the module being tested.
This is the easiest to implement and run. I don't have to do anything
special to run the tests. The directory structure is like this

Projects/
    MyApp/
        __init__.py
        myapp.py
        test_myapp.py

Simply run the test from within the MyApp folder as

% python test_myapp.py
or use the nose test runner

% nosetests

Type 2
======

Here the unit tests are located in its own tests folder in the package you
want to test. Running the unit tests from inside the tests folder won't
work as it worked in Type 1. That's because the myapp module can not be
resolved. Here is how the directory structure looks like

Projects/
    MyApp/
        __init__.py
        myapp.py
        tests/
            __init__.py
            test_myapp.py
It will work if you ran it from inside the package folder and gave the
complete path to the test file as

% python tests/test_myapp.py
It will also work if you used the nose test runner from inside MyApp.

% nosetests
It will also work from inside the tests folder if you added MyApp to your
PYTHONPATH, but that is an option I dont like. I don't want to keep
changing my PYTHONPATH.

Type 3
======

This is where the tests folder is on the same level as the package folder.
You can not run the test scripts from within the tests folder as again it
will not be able to resolve the myapp package. Here is how the directory
structure looks like

Projects/
    MyApp/
        __init__.py
        myapp.py
    tests/
        __init__.py
        test_myapp.py

You can run the tests from within the MyApp package by referencing the
tests folder as

% python ../tests/test_myapp.py

As you are running the test from the package, the myapp module is
automatically in your PYTHONPATH. The other way of doing this would be by
putting your package in your PYTHONPATH, which again as I mentioned earlier
I don't like to do.

What is the best way of doing this? I would really appreciate to know how
the experts are doing this. Is there anything I need to consider before I
start using test suites.

Thank you
Srini
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20130707/ee074fac/attachment-0001.html>


More information about the Tutor mailing list