Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 允许测试依赖于其他测试的测试框架_Python_Unit Testing_Testing - Fatal编程技术网

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

Python 允许测试依赖于其他测试的测试框架,python,unit-testing,testing,Python,Unit Testing,Testing,我想知道是否有一个测试框架允许将测试声明为依赖于其他测试。这意味着,如果他们所依赖的测试没有通过,他们不应该运行,或者他们的结果不应该突出显示 这种设置的要点是,在存在许多测试失败的情况下,可以更容易地确定根本原因 作为奖励,如果有某种方法可以使用一个测试创建的对象作为其他测试的固定装置,那就太好了 这个特性集是由任何Python测试框架提供的吗?或者,这种方法会与单元测试的基本理念背道而驰吗 或者,这样的做法是否可行 与单元测试相反 基本哲学 是的……如果它是一个单元测试,它应该能够自己运行。

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

这种设置的要点是,在存在许多测试失败的情况下,可以更容易地确定根本原因

作为奖励,如果有某种方法可以使用一个测试创建的对象作为其他测试的固定装置,那就太好了

这个特性集是由任何Python测试框架提供的吗?或者,这种方法会与单元测试的基本理念背道而驰吗

或者,这样的做法是否可行 与单元测试相反 基本哲学


是的……如果它是一个单元测试,它应该能够自己运行。每当我发现有人想要创建对测试的依赖时,都是因为代码的结构很差。我并不是说这就是您的情况,但它通常是代码气味的标志。

看起来您需要的不是阻止依赖测试的执行,而是以一种更结构化的方式报告单元测试的结果,允许您识别测试中的错误何时级联到其他失败的测试上

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

它很可能不是单元测试,因为它们应该是快速的(并且是独立的)。所以运行它们并不是什么大麻烦。我可以看出这可能有助于缩短集成/回归运行以节省时间。如果这是您的主要需求,我会用[Core]或类似属性标记安装测试

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

  • Taskn:在标记为[Core]的X、Y、Z DLL中运行所有测试
  • Taskn+1依赖于Taskn:在X、Y、Z DLL中运行所有测试,不包括标记为[Core]的测试

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

测试运行者py.test、nosetest和unit2/unittest2都支持“第一次失败后退出”的概念。py.test通常允许指定“-maxfail=NUM”在NUM失败后停止运行和报告。这可能已经对您的案例有所帮助,特别是因为维护和更新测试的依赖项可能不是一项有趣的任务

是一个Python测试框架,它使用TestNG的特性扩展Python内置的unittest模块和Nose


听起来像你要找的。请注意,它的工作原理与unittest和Nose稍有不同,但该页面解释了它的工作原理。

当然,是的。。只有在测试运行需要一段时间的情况下,防止测试运行才真正有用。是否有一些既定的方法可以消除错误级联?我的问题不在于速度,而在于偶尔会遇到大量难以筛选的失败测试。我想,如果能够在测试中使用decorator来指示它不应该运行,除非其他测试方法已经通过,这将是非常有用的。也许可以提供已识别方法的返回值作为装饰测试方法的kwarg。当然,这需要测试框架构建依赖关系图。在这种情况下,我可能需要重构我的测试套件和/或代码-我认为Aaron的建议非常明智。@intuit..-是的,如果你可以通过重组你的测试代码来避免这种情况,那么就这么做吧。我的回答是针对这样一种情况,即“付出的努力太多了”。。在这种情况下,这可能是一个可接受的折衷方案,这样您就可以区分core和dep测试失败。。。我认为这实际上没有帮助,因为选择第一个测试与底层依赖关系图无关。也就是说,我会在更高级别的测试中失败,而不是看到根本原因的失败。我主要希望找到一种方法,能够在未来的项目中做到这一点,我不确定这对于现有的项目是否真的值得。我经常对我的测试进行分组,首先是细粒度的单元测试,然后是更高级别的测试。test以文件顺序运行测试,这很有帮助。不过,我同意一些跨文件depdency声明可能有用。如果您的“单元”依赖于其他单元,那么听起来您并不是真正的单元测试。实际上,您正在进行集成测试。如果您想进行单元测试,最好将不会失败的模拟对象传递给每个单元,而不是使用真实的对象。不过,这适合于集成测试。那么测试需要使用用户名和密码登录的API呢?是否应为每个单元测试重新建立登录会话?