0

我的代码在 Linux 服务器上运行。我从恰好是 Mac 的笔记本电脑上编辑代码。我使用 netatalk,以便可以轻松地将代码目录从笔记本电脑安装到服务器上。我最近开始使用 Pyramid 和 SQLalchemy,我想在我的开发实践中添加“单元测试”。

当我从笔记本电脑查看任何目录时,OS X / Netatalk 会创建一个 .AppleDouble 子目录。通常,这不是问题,我只是忽略 .AppleDouble 子目录。

当我访问运行测试的目录时,OS X / netatalk 添加 .AppleDouble 目录,在此目录中,我可以找到与父目录中存在的名称完全相同的文件。这是一个问题,因为 unittest 在它找到的所有目录中递归查找“test*.py”模式并尝试导入这些文件。.AppleDouble 目录中的任何文件(包含图标数据、桌面位置等)都失败了。

我知道一种选择是不使用 netatalk。如果可能的话,我想避免这种情况。

查看 unittest 中的代码(特别是 loader.py),似乎测试用例的发现发生在一个名为 discover() 的函数和一个相关的函数 _find_files() 中。

我正在寻找一些关于如何最好地覆盖 discover() 和 _find_files() 函数的想法。我没有很多重写 Python 库的经验,也没有看到任何明显的钩子。

如果重要的话,我正在使用 virtualenv 并且很确定如果我将 unittest 的副本放在 virtualenv 中,它将覆盖系统版本。这可能是一个好的开始,但我很想知道其他人认为什么是更好的解决方案,而不仅仅是一个好的解决方案。

4

1 回答 1

0

你如何运行测试?如果您正在开发一个包,setup.py您可以使用 testsuite 参数告诉它在特定包(/文件夹)中查找测试。或者尝试将nosetests作为测试运行者。

另一种选择是自己加载测试,即:

import unittest

def runtest(testclass):
    suite = unittest.TestLoader().loadTestsFromTestCase(testclass)
    testResult = unittest.TextTestRunner(verbosity=2).run(suite)
于 2012-04-22T17:34:18.623 回答