鼻子与pytest – 什么(主观)差异应该让我select呢?

我已经开始研究一个相当大的(multithreading的)Python项目,并加载了(单元)testing。 最重要的问题是运行应用程序需要一个预设的环境,这是由上下文pipe理器实现的。 到目前为止,我们使用了可以在这个pipe理器中运行testing的unit testing运行器的补丁版本,但是这不允许在不同的testing模块之间切换上下文。

鼻子和pytest都支持这样的事情,因为它们支持多个粒度的固定装置,所以我们正在考虑切换到鼻子或pytest。 这两个库也将支持“标记”testing,并只运行这些标记的子集,这也是我们想要做的。

我一直在浏览nose和pytest的文档,据我所知,这些库的大部分基本上支持相同的function,除了可以命名不同,或者需要稍微不同的语法。 另外,我注意到可用插件中的一些小的差异(鼻子有多进程支持,pytest似乎不是)

所以看来,魔鬼在细节上,这意味着(通常至less)在个人的品味,我们最好去适合我们的个人品味最好的图书馆。

所以我会要求一个主观的论证,为什么我应该用鼻子或pytest去select最适合我们需要的图书馆/社区组合。

我曾经使用鼻子,因为这是默认的塔主。 我根本不喜欢它。 它有多个地方的configuration卷轴,几乎所有的事情似乎都是由一个没有logging的插件来完成的,这使得它更加间接和混乱,而且由于它默认进行了unit testing,所以它经常打破Unicode回溯,隐藏了错误的根源。

在过去的几年中,我一直对py.test很满意。 能够仅仅通过开箱即可编写testing就能让我恨写testing的方式减less了,并且在核心上我需要的任何东西都是非常容易的。 而不是一个固定的插件接口,它只是一堆钩子,而且你需要进一步挖掘,这是非常容易理解的源代码。 我甚至写了一个适配器,用于在py.test下运行Testifytesting,而使用Testify比py.test更麻烦。

这就是说,我听说鼻子有无级别testing的插件,现在断言反省,所以你可能会做任何罚款。 尽pipe如此,我仍然觉得我可以用py.test来运行,而且我可以理解当它断裂时发生了什么。