当前位置: 首页 > 面试题库 >

如何仅使用python unittest2在测试失败时执行代码?

芮雪风
2023-03-14
问题内容

我在python的unittest2框架中运行了一些基于类的单元测试。我们正在使用Selenium
WebDriver,它具有便捷的save_screenshot()方法。我想在每次测试失败时在tearDown()中抓取一个屏幕截图,以减少调试_为什么_ 测试失败的时间。

但是,我找不到仅在测试失败时运行代码的任何方法。tearDown()不管测试是否成功,都会调用,并且我不想用成百上千的浏览器屏幕快照来使我们的文件系统混乱,以确保测试成功。

您将如何处理?


问题答案:

找到了解决方案-我可以覆盖failureException

@property
def failureException(self):
    class MyFailureException(AssertionError):
        def __init__(self_, *args, **kwargs):
            self.b.save_screenshot('%s.png' % self.id())
            return super(MyFailureException, self_).__init__(*args, **kwargs)
    MyFailureException.__name__ = AssertionError.__name__
    return MyFailureException

这似乎难以置信,但到目前为止,它似乎仍然有效。



 类似资料:
  • 只有当Jasmine测试失败时才可能做某事吗?与在之后执行的 之后并置,无论结果如何,我正在寻找一种仅在 有一个失败的期望之后执行代码的方法。 这个问题不是特定于Angular的,但在我的场景中,我正在测试一个Angular服务,它使用<code>和$log<code>输出调试消息。我不想为了成功的测试而使控制台杂乱无章,只想显示失败测试的附加信息。 我正在运行Jasmine 2.2.0。 编辑:

  • 在使用maven运行单元测试时,我遇到了这个异常。我的所有测试都没有执行。我的测试类的格式是 我正在运行以下命令来运行此命令: 使用的surefire插件是: 有人知道为什么我的测试没有执行吗?我用的是jUnit 4.8.2和surefire 2.14.1

  • 和下面的一些行 我在1.7.6版本中使用了frontend-maven-plugin,并将其插入到pom.xml中。 我的karma.conf.js看起来是这样的: 我的Package.json: My Angular.json: 我使用以下版本的软件包: IDE 我做错了什么?

  • 我们已经为spark编写了单元测试,在本地模式下有4个线程。 当一个接一个地启动时,例如通过intellij或sbt testOnly,每个测试都运行良好。 当用sbt测试启动时,它们会出现如下错误 我们使用的是一个带有多个子项目的sbt项目,其定义如下:

  • 我试图用jenkins execution命令测试我的java项目,但是我得到了以下错误消息: 有关单个测试结果,请参阅/var/jenkins_home/workspace/test1/target/surefire-reports。请参阅转储文件(如果存在)[date].dump,[date]-jvmrun[N].dump和[date].dumpstream。分叉的VM在没有正确地说再见的情况

  • 我按照cypress在他们的文档中推荐的方式编写测试,即每个测试有多个断言,但是用这种方式编写测试时会出现一个问题,那就是如果断言失败,测试执行就会停止。 我希望每个测试有多个断言,如果其中一个失败,测试将失败,但将继续测试执行,所以在最后,我将能够看到测试中失败的所有断言,而不仅仅是第一个失败的断言。 提前感谢!