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

如果未引发异常,则通过Python单元测试

史骏
2023-03-14
问题内容

在Pythonunittest框架中,如果没有引发异常,是否有一种方法可以通过单元测试,否则会因AssertRaise而失败?


问题答案:

如果我正确理解了您的问题,则 可以 执行以下操作:

def test_does_not_raise_on_valid_input(self):
    raised = False
    try:
        do_something(42)
    except:
        raised = True
    self.assertFalse(raised, 'Exception raised')

…假设您有一个相应的测试,可以正确地Exception针对无效输入进行测试,当然:

def test_does_raise_on_invalid_input(self):
    self.assertRaises(OutOfCheese, do_something, 43)

但是,正如评论中指出的那样,您需要考虑 实际 测试的内容。像…这样的测试可能

def test_what_is_42(self):
    self.assertEquals(do_something(42), 'Meaning of life')

…更好,因为它测试系统所需的行为,如果一个异常失败 提高。



 类似资料:
  • 我有一个方法,如果名称与正则表达式匹配,则必须返回true,如果名称具有特殊字符或数字,则必须返回null。 这是方法: 这是对无法通过的方法的测试:

  • 我在“php油测试”命令的丛林中徘徊了几天。 我在windows7中通过pear安装了phpunit。在安装之后,当我执行“PHPOilTest”命令时,出现以下错误。 未捕获异常油\异常:PHPUnit似乎未安装。 但是,看起来phpUnit安装正确,因为phpUnit--version命令工作正常(请参考以下内容)。 PHPUnit 4.0.14 by Sebastian Bergmann.

  • 我正在尝试使用@Valid验证我的JPA实体,如下所示: 它工作了一段时间,但现在它停止工作,我不知道为什么。我试着在< code>persist方法中手动执行,它按预期工作: 可能会发生什么情况,或者我该如何调试?

  • 问题内容: 在我的使用Mockito的单元测试中,我想验证未抛出该异常。 我的测试设置了,设置了对象和属性,以便该方法将抛出。 我 确认 从未调用过Calling.method()。 我想要测试失败,因为它抛出,然后我想编写一些代码来解决此问题。 我注意到的是,测试始终会通过,因为永远不会抛出异常。 问题答案: tl; dr JDK8之后:使用 AssertJ 或自定义lambda来声明 异常 行

  • 我正在使用以下代码检索我的链接: 接下来,我呼吁: 然后 并且抛出过时的元素异常。 现在,考虑到,我本以为可以避免这个问题,但它仍然存在。 我很想在加载页面源代码后,将其放入lxml中,以完全避免这个问题。 建立和迭代链接之间的时间最多为一秒钟。 有没有其他人遇到过这样的问题,并找到了解决方案? 感谢您的指导。

  • “异常信息” 在WebDriver.dll中发生类型为“System.InvalidOperationException”的未处理异常 附加信息:没有这样的驱动程序(NoSuchDriver) OpenQa.Selenium.edge.EdgedRiver..ctor(字符串edgeDriverDirectory,EdgeOptions选项) ConsoleApplication.Program.