所以我试图实现类似于单元测试框架如何执行以下操作:
class BaseTest(T.TestCase):
# Disables this test from being run
__test__ = False
def test_foo(self): pass
# However this test is picked up because it doesn't directly have __test__ set
class InheritingTest(BaseTest): pass
Run Code Online (Sandbox Code Playgroud)
我觉得奇怪的一件事:
# >> InheritingTest.__test__
# False
Run Code Online (Sandbox Code Playgroud)
这将表明,我认为这是不使用元类设置 __test__到True建筑的类型.
我尝试了通过python库,find . -name "*.py" | xargs grep '__test__'但似乎没有发现任何与此相关的内容.
我解决这个问题的"猜测"方法是执行以下操作:
def is_class_tested(cls):
return cls.__dict__.get('__test__', True)
Run Code Online (Sandbox Code Playgroud)
然而,这对我来说感觉很脆弱......有没有更清洁/更好的方法来做到这一点在所有情况下都有效?班级是否有可能没有__dict__财产?
python ×1