首页 文章

如何使python单元测试总是在从不同的工作目录运行时找到测试数据文件?

提问于
浏览
17

这是关于测试环境设置的问题 .

在我的项目中,我有一些访问测试数据文件的单元测试 . 这些单元测试可以通过测试运行器从我的项目目录运行 . 或者我可以单独运行每个测试文件/模块,例如用于调试目的 .

问题是,根据我运行测试的位置,当前目录是不同的 . 因此,当从项目目录运行这些文件时,打开一个测试数据文件,如下所示,通过提供相对于当前目录的路径将不起作用,因为测试数据文件不在该目录中 .

f = open('test_data.ext', 'r')

我想使用__file__来使用相对于当前测试模块的路径,但是这个doesn't work when the test module calling file is the one being run individually .

人们如何解决这个问题呢?

2 回答

  • 6

    我想到了许多不同的方式:

    • 为数据目录设置环境变量

    • 编写一个总是导入的小模块,其唯一目的是相对于您的数据目录具有固定位置,然后从那里调用 __file__

    • 在运行时生成数据

    • 将数据存储在数据库而不是文件中

    • 将数据存储在文件系统中的固定位置,而不是相对于包的位置

    • 不要直接运行测试代码

    最适合您的解决方案取决于您的环境以及您的特定数据和程序 .

  • -1

    我'm not sure it'是你的完整解决方案,但对于Python中的单元测试,我总是使用 Nose . 它具有出色的测试发现程序 . 你可以找到它的机制here . 也许你可以在Python的传统单元测试中使用它 .

    py.test 也使用了一个整洁的发现机制..

相关问题