我正在研究一个小的Python包,我正在为它编写单元测试。我的包结构以相当典型的Python方式布局:
mypackage/
mymodule.py
test/
test_mymodule.py
此特定模块旨在读取文件的内容,使用所述内容执行操作,然后返回值。为了测试这个,我想在我的测试套件中包含一些输入文件。
我想我可以像这样组织他们:
mypackage/
mymodule.py
test/
test_mymodule.py
test_input01.txt
test_input02.txt
然后使用__file__
全局变量找到要读取的文件。
我的问题是:这是一种合理的Pythonic组织方式吗?我担心以这种方式猜测路径在任何环境中都不可靠(例如,如果通过pip等安装包)。
具体来说,我正在寻找支持这种(或其他)方法的一些官方文档,或者2)使用这种(或其他)方法的备受好评的现有项目。
答案 0 :(得分:2)
使用__file__
来定位当前目录路径和测试数据所在的位置几乎是可以的。
作为示例,请参阅pep8 github项目,特别注意在testsuite
包 - *.py
文件中如何组织测试,其名称为E10.py
,{{ 1}}在测试中用作目标文件。
此外,pylint使用了类似的方法(基于E11.py
),但测试数据的排列方式为subpackages。
另见,见:
希望有所帮助。