2016-02-29 74 views
1

在鼻子中,无论安装是否成功完成或测试运行状态如何,拆卸都会运行。检索鼻子测试用例的结果并在拆卸中使用

我想在拆卸时执行一项任务,该任务仅在刚刚运行失败的测试时执行。是否有一种简单的方法来检索每个单独测试用例的结果并将其传递给拆解方法以进行解释?

class TestMyProgram: 
    def setup(self): 
     # setup code here 

    def teardown(self): 
     # teardown code here 

     # run this code if test failed 
     if test_result == 'FAIL': 
      # do something  

    def test_one(self): 
     # example test placeholder 
     pass 

    def test_two(self): 
     # example test placeholder 
     pass 

回答

1

您必须捕获测试状态并将其传递给您的拆卸方法。测试的状态在鼻子代码内:如果不编写鼻子插件,则无法访问。但即使是插件,你也必须编写一个定制的装备来将状态传递给拆卸方法。但是,如果你愿意打破代码的结构有点满足您的要求,您也许能够做这样的事情:

def special_trardown(self, state): 
    # only state specific logic goes here 
    print state 

def test_one_with_passing_state(self): 
    try: 
     test_one(self) 
    except AssertionError as err: 
     test_result = "FAIL" 
     self.special_teardown(test_result) 
     raise 

它不是完美的,但它使明显的事件流其他人在看你的测试。您也可以将其封装为装饰/上下文管理器以获取更多语法糖。

+0

我喜欢这个。我曾尝试创建一个装饰器,但在测试类中创建它时似乎没有相同的表现。是否有可能提供一个在这种情况下创建一个例子? – ILostMySpoon

相关问题