【发布时间】:2017-09-11 14:04:29
【问题描述】:
在 Python 的 typing 模块中,它们有一个非常有用的常量,在类型检查时是 True,否则是 False。这意味着,例如,如果 TYPE_CHECKING 的计算结果为 True,您可以动态导入类。
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from module import Class
如果unittest 有类似的东西,那将非常有用。我可以在__init__.py文件中看到,存在一个定义为__unittest = True的变量:
__all__ = ['TestResult', 'TestCase', 'TestSuite',
'TextTestRunner', 'TestLoader', 'FunctionTestCase', 'main',
'defaultTestLoader', 'SkipTest', 'skip', 'skipIf', 'skipUnless',
'expectedFailure', 'TextTestResult', 'installHandler',
__unittest = True
有没有办法像typing中的TYPE_CHECKING一样使用__unittest?
原因:我的代码库中有一些用户示例,可以运行和绘制图表。我想将这些示例作为单元测试的一部分运行,以查看它们何时中断并需要修复。但是,我需要一种动态方法来阻止示例尝试打开绘图窗口并阻止单元测试。
非常感谢任何帮助!
【问题讨论】:
-
您到底想检查什么?那个
unittest已经被导入还是别的什么? -
只是建议一个非常简单的方法:在单元测试期间向所有需要更改其行为的方法添加
**kwargs(这已经是进行单元测试的不好方法,因为您正在更改在某些方面,您的代码中的功能 - 例如,您正在执行的绘图与您的函数中的数据表示不再兼容),因此在您添加到调用的测试中,参数unittest=True可能对您来说是一个很好的解决方案? -
要检查您要问的内容(似乎
unittest已被导入)您可以检查密钥"unittest"是否在sys.modules中 -
是的@MatteoRagni!您可以使用
'unittest' in sys.modules来确定是否已导入单元测试。 -
如果你把它变成一个答案,我会接受它并为你带来荣耀