Search code examples
pythontdddirectory-structureconvention

Python TDD directory structure


Is there a particular directory structure used for TDD in Python?

Tutorials talk about the content of the tests, but not where to place them

From poking around Python Koans, suspect its something like:

/project/main_program.py         # This has main method, starts program
/project/classes/<many classes>.py
/project/main_test.py            # This simply directs unittest onto tests, can use parameters fed to it to customise tests for environment
/project/tests/<many tests>.py

# to run tests, type "python -m unittest main_test.py" (into a terminal)
# to run program, type "python main_program.py"

Am I doing this right? Is there a good guide which teaches the directory hierarchy for TDD? I heard that having mixed files of code and tests is bad.

References:


Solution

  • Based on your project, Whatever style lets you

    • Seperate implementation code from testing code
    • Create new tests easily
    • Run all tests in one operation (e.g. for regression testing)

    The python koans/etc are just guidelines. In the end you want to uphold DRY with your unittests and be able to test easily, maintainably and intuitively. In the end it is up to you to decide your folder structure.

    I feel like you are focusing too much on satisfying convention instead of satisfying your project.