这是关于测试环境设置的问题。
在我的项目中,我有几个访问测试数据文件的单元测试。这些单元测试可以通过测试运行器从我的项目目录运行。或者我可以单独运行每个测试文件/模块,例如,用于调试目的。
问题是,根据我运行测试的位置,当前目录是不同的。因此,当从项目目录运行测试数据文件时,通过给出相对于当前目录的路径打开测试数据文件将不起作用,因为测试数据文件不在该目录中。
f = open('test_data.ext', 'r')
我想使用__file__来使用相对于当前测试模块的路径,但是当调用__file__的测试模块是单独运行的测试模块时,这不起作用。
人们通常如何解决这个问题?
我想到了许多不同的方法:
- 为您的数据目录 设置环境变量
- 写一个你总是导入的小模块,它的唯一目的是相对于你的数据目录有一个固定的位置,然后从那里调用
__file__
- 在运行时生成数据
- 将数据存储在数据库中而不是文件中
- 将数据存储在文件系统中的固定位置,而不是相对于包的位置 不要直接运行你的测试代码
对您来说最有意义的解决方案取决于您的环境和特定的数据和程序。
我不确定这是您的完整解决方案,但对于Python中的单元测试,我总是使用Nose
。它有一个优秀的测试发现程序。你可以在这里找到它的机理。也许你也可以得到一些关于Python传统单元测试的想法。
py.test
也使用了一个整洁的发现机制。