测试框架允许测试依赖于其他测试

时间:2010-10-07 20:09:45

标签: python unit-testing testing

我想知道是否有一个测试框架允许将测试声明为依赖于其他测试。如果他们所依赖的测试没有通过,这意味着他们不应该被运行,或者他们的结果不应该突出显示。

这种设置的重点是允许在存在许多测试失败的情况下更容易确定根本原因。

作为奖励,如果有某种方法可以将使用一个测试创建的对象用作其他测试的夹具,那将会很棒。

这个功能集是否由任何Python测试框架提供?或者这种方法是否与单元测试的基础哲学相对立?

5 个答案:

答案 0 :(得分:4)

  

或者是这样的方法   与单元测试的对立面   潜在的哲学?

是的......如果是单元测试,它应该能够独立运行。任何时候我发现有人想要在测试中创建依赖项是因为代码的结构很糟糕。我并不是说这是你案例中的实例,但它通常是代码嗅觉的标志。

答案 1 :(得分:2)

  

Proboscis是一个Python测试框架,它扩展了Python的内置unittest模块和Nose,其中包含TestNG的功能。

听起来像你正在寻找的东西。请注意,它对unittest和Nose有点不同,但该页面解释了它的工作原理。

答案 2 :(得分:1)

这似乎是一个反复出现的问题 - 例如#3396055

它很可能不是单元测试,因为它们应该快速(且独立)。因此,运行它们并不是一个很大的障碍。我可以看到这可能有助于短路集成/回归运行以节省时间。如果这是您的主要需求,我会使用[Core]或某些此类属性标记设置测试。

然后我继续编写一个包含两个任务的构建脚本

  • 任务:在标有[核心]
  • 标记的X,Y,Z dll中运行所有测试
  • Taskn + 1依赖于Taskn:在X,Y,Z dll中运行所有测试,不包括标记为[Core]的文件

(如果Taskn没有成功,Taskn + 1不应该运行。)这不是一个完美的解决方案 - 例如如果任何一个[核心]测试失败,它会挽救。但我想你应该修复核心的而不是进行非核心测试。

答案 3 :(得分:0)

看起来您需要的不是阻止执行相关测试,而是以更结构化的方式报告单元测试的结果,这样您就可以确定测试中的错误何时级联到其他失败的测试。

答案 4 :(得分:0)

测试跑步者py.test,Nosetests和unit2 / unittest2都支持“在第一次失败后退出”的概念。 py.test通常允许指定“--maxfail = NUM​​”以在NUM次失败后停止运行和报告。这可能已经对您的情况有所帮助,尤其是因为维护和更新测试的依赖关系可能不是那么有趣的任务。