是否有 pythonic 单元测试方法来断言函数已成功导入?

Is there a pythonic unit testing way to assert that a function has been imported successfully?

假设我们有以下简单的文件结构:

- some_file.py
- tests.py

文件 some_file.py 应该包含函数 foo,但是如何确认使用 unittest 框架?

我可以看到在 tests.py:

中做这样的事情
try:
   from some_file import foo
except ImportError as error:
   print('Error! Could not find foo.)

...但我很好奇是否有一种方法可以使用断言而不是 try-except 块来做到这一点。

非常全面地测试了模块本身的导入,但我实际上并没有在文件中看到任何关于函数的信息,除非我忽略了什么。

您可以使用多种方法:

  • 只导入没有try-except的函数。如果它没有引发异常,则视为通过测试。但是,如果出现这种情况,则计为 错误 而不是 失败
  • 将导入从 from some_file import foo 更改为 import some_file 并添加断言 assertTrue(hasattr(some_file, 'foo'))。这样做的好处是您现在正在明确测试 some_file 中存在名为 foo 的东西,而不是您可以导入 some_file.