在Python包的unittest测试套件中包含额外的文件

时间:2014-01-10 00:09:21

标签: python python-2.7 unit-testing testing

我正在研究一个小的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)使用这种(或其他)方法的备受好评的现有项目。

1 个答案:

答案 0 :(得分:2)

使用__file__来定位当前目录路径和测试数据所在的位置几乎是可以的。

作为示例,请参阅pep8 github项目,特别注意在testsuite包 - *.py文件中如何组织测试,其名称为E10.py,{{ 1}}在测试中用作目标文件。

此外,pylint使用了类似的方法(基于E11.py),但测试数据的排列方式为subpackages

另见,见:

希望有所帮助。