我的代码在 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 中,它将覆盖系统版本。这可能是一个好的开始,但我很想知道其他人认为什么是更好的解决方案,而不仅仅是一个好的解决方案。