Python TDD目录结构

7

在Python中进行TDD时,是否有特定的目录结构?

教程讲解了测试内容,但没有说明应该放在哪里。

从研究Python Koans得出,它类似于以下结构:

/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"

我这样做对吗?有没有好的指南教授TDD的目录层次结构?我听说混合代码和测试文件是不好的。
参考文献:

对于新手:如果您的结构如上所示,则要测试/project/classes/codey.py和/project/tests/testy.py,您需要在testy.py中编写“from classes import codey”,以便它知道在哪里查找。在导入时,Python会向上搜索。因此,如果您有/cat/sat/on/sometest.py和/cat/trolled/dog/somecode.py,则“from cat.trolled.dog import somecode”将进入测试。 - xxjjnn
2个回答

4
根据您的项目,无论采用何种风格,都应该将实现代码与测试代码分开,轻松创建新的测试,并可以一次运行所有测试(例如,进行回归测试)。Python koans / etc 只是指导方针。最终,您希望通过unittests来遵循DRY原则,并能够轻松、可维护和直观地进行测试。最终,决定文件夹结构取决于您自己。我感觉您过于关注满足惯例,而不是满足您的项目需求。

1
很酷,没关系 =)超越...嘿,你把Python盒子放哪了? - xxjjnn
这仍然是一个有效的问题,并且最终会在每个编程语言论坛上被问到。有关更多说明,请参见https://dev59.com/jXVC5IYBdhLWcg3ww0Dr。 - J.Z.

1

有两个基本选项:在顶层的“test”(或“tests”)目录中,或在每个级别的包内的“test”目录中。前者的优点是可以轻松地保持单元测试和其他测试的一致性。后者的优点是可以轻松地针对已安装版本的代码运行测试,并且被this blog post推荐,该博客文章描述了适用于Python项目的基本结构。

归根结底,重要的是使它们易于查找和运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接