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

单元测试是否可以断言方法调用sys.exit()?

盖辉
2023-03-14
问题内容

我有一个Python 2.7方法,有时会调用

sys.exit(1)

当满足正确的条件时,是否可以进行单元测试以验证是否调用了此代码行?


问题答案:

是。sys.exit加注SystemExit,因此您可以使用以下命令进行检查assertRaises

with self.assertRaises(SystemExit):
    your_method()

实例SystemExit具有code设置为建议的退出状态的属性,并且返回的上下文管理器assertRaises将捕获的异常实例设置为exception,因此检查退出状态很容易:

with self.assertRaises(SystemExit) as cm:
    your_method()

self.assertEqual(cm.exception.code, 1)

sys.exit文档:

从Python退出。这是通过引发SystemExit异常来实现的…可以在外部级别拦截出口尝试。



 类似资料:
  • 问题内容: 假设我在Python单元测试中具有以下代码: 有没有一种简单的方法可以断言在测试的第二行期间调用了特定方法(在我的情况下)?例如是否有这样的事情: 问题答案: 我为此使用Mock(在py3.3 +上现在是unittest.mock): 对于您的情况,它可能看起来像这样: Mock支持许多有用的功能,包括修补对象或模块的方式以及检查是否调用了正确的东西等。 买者自负! (请当心!) 如果

  • 问题内容: 如果是跑它运行在您的文件结尾通过运行启动格式的功能和使用(* T testing.T)模块。我想知道文件中的每个功能是同时运行还是确定地分别运行每个功能?是否为每个人创建一个执行例程?如果确实为每个例程创建了一个go例程,是否可以某种方式监视go例程?是否有可能做类似的事情并为每个实例获取一个实例并对其进行监控,诸如此类? 注意:这个问题假设您使用go(测试)随附的测试框架。 问题答案

  • 玩弄Mockito来实现我的服务的单元测试,但由于某种原因,我无法通过我的厚脑袋来实现这一点。我的考试通过了,但我不能确信我做得对。 下面是一个测试count()方法的示例。该方法只是将调用转发到它的存储库,我不想验证仅此而已,没有其他事情发生。这就是我得到的: 我的考试及格了,但我有一些问题。 > 我需要验证吗?我觉得我这样做是因为我想验证personRepository。实际上调用了count

  • 如果它没有返回任何东西,是否可能以某种方式测试它是否停止了这个if语句?我的意思是,我想把某种断言,检查“好吧,上下文是空的,所以它在这个返回时停止了”。 当然,问题是类是空的,为什么我想测试这种方法可能会有问题,但我想听听一些可能性。

  • 我正在使用spock测试Java Spring Boot代码。它在lombok@slf4j注释上获得一个日志记录器。 具有日志调用的虚拟类 斯波克规格 用模拟记录器从这个答案切换真实的帮助器。 我想测试日志调用,但仍然看到日志消息。 我提出了这个解决方案,它使用groovy规范的记录器进行调用。 但是我发现它很冗长,不管我如何为它创建一个帮助器函数。我不是很熟悉函数groovy,将此代码移到函数中

  • 所以我肯定有类似的东西在那里,但我已经搜索了一个小时,还没有找到确切的我要找的东西。假设我有一个这样的类: 我该如何制作这样的作品?