beforeTest方法

时间:2016-06-28 22:08:22

标签: python unit-testing nose

我正在使用跳过装饰器进行测试:

@skip('I want this to skip')
def test_abc(self):

我还有一个鼻子插件来报告带有定义

的测试结果
def beforeTest(self, *args, **kwargs):

test_abc方法正在捕获测试用例beforeTest。如何在beforeTest方法中检查装饰器值?

我看到unittest装饰器的定义有以下代码:

test_item.__unittest_skip__ = True
test_item.__unittest_skip_why__ = reason

但我不知道如何从beforeTest访问它。 运行args[0].test时有测试用例对象,但我似乎可以找到定义__unittest_skip__的位置

谢谢!

1 个答案:

答案 0 :(得分:1)

查看源代码,似乎没有 clean 方法来执行此操作。 TestCase似乎知道它根据_testMethodName实现细节测试的方法。如果你有对正在运行的测试用例的引用(可能args[0].test?我不熟悉nose ...)你可以使用它,或者你可以解析它超出TestCase.id()的返回值。假设你没有做一些非常时髦的事情,那就像是:

test_name = test_case.id().rsplit('.', 1)[-1]
test_method = getattr(test_case, test_name)
if getattr(test_method, '__unittest_skip__', False):
    # Method skipped.  Don't do normal stuff.