20

这是一个关于测试环境设置的问题。

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

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

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

我想过使用 __file__ 来使用相对于当前测试模块的路径,但是当调用 __file__ 的测试模块是单独运行的模块时,这不起作用

人们通常如何解决这个问题?

4

2 回答 2

9

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

  1. 为您的数据目录设置环境变量
  2. 编写一个始终导入的小模块,其唯一目的是相对于数据目录具有固定位置,然后__file__从那里调用
  3. 在运行时生成数据
  4. 将数据存储在数据库而不是文件中
  5. 将数据存储在文件系统中的固定位置,而不是相对于包的位置
  6. 不要直接运行你的测试代码

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

于 2013-01-16T15:27:31.677 回答
-1

我不确定这是否是您的完整解决方案,但对于 Python 中的单元测试,我总是使用Nose. 它有一个优秀的测试发现程序。你可以在这里找到它的机制。也许你也可以得到一些用于 Python 的传统单元测试的想法......

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

于 2013-01-16T15:28:22.860 回答