这是关于测试环境设置的问题 .
在我的项目中,我有一些访问测试数据文件的单元测试 . 这些单元测试可以通过测试运行器从我的项目目录运行 . 或者我可以单独运行每个测试文件/模块,例如用于调试目的 .
问题是,根据我运行测试的位置,当前目录是不同的 . 因此,当从项目目录运行这些文件时,打开一个测试数据文件,如下所示,通过提供相对于当前目录的路径将不起作用,因为测试数据文件不在该目录中 .
f = open('test_data.ext', 'r')
我想使用__file__来使用相对于当前测试模块的路径,但是这个doesn't work when the test module calling file is the one being run individually .
人们如何解决这个问题呢?
2 回答
我想到了许多不同的方式:
为数据目录设置环境变量
编写一个总是导入的小模块,其唯一目的是相对于您的数据目录具有固定位置,然后从那里调用
__file__
在运行时生成数据
将数据存储在数据库而不是文件中
将数据存储在文件系统中的固定位置,而不是相对于包的位置
不要直接运行测试代码
最适合您的解决方案取决于您的环境以及您的特定数据和程序 .
我'm not sure it'是你的完整解决方案,但对于Python中的单元测试,我总是使用
Nose
. 它具有出色的测试发现程序 . 你可以找到它的机制here . 也许你可以在Python的传统单元测试中使用它 .py.test
也使用了一个整洁的发现机制..