Python unittest - 根据测试结果执行不同的操作?

时间:2014-06-16 14:33:32

标签: python python-2.7 selenium-webdriver

在python unittest模块中,如何根据测试结束的方式执行不同的任务?我正在运行selenium webdriver自动化测试,并且在出现故障或错误的情况下,我想捕获截图。

1 个答案:

答案 0 :(得分:0)

您定义"测试如何结束"。一般原则是每单元测试应该有一个断言(在unittest模块的上下文中,这意味着test_*方法。所以测试在你运行断言后结束

def test_my_page(self):
   try:
     self.assertEqual(some_element.field, '42')
   except Exception:
     # take screenshot

当然你可以更一般:

class MyTestClass(unittest.TestCase):
    def setUp(self):
        self.take_screenshot = False

    def tearDown(self):
        if self.take_screenshot:
            # take screenshot with selenium
            # and do other stuff

    def test_my_page(self):
        try:
           self.assertEqual(some_element.field, '42')
        except Exception:
           self.take_screenshot = True

虽然这可能与第一个相比没有太大的改进(它只是保持测试方法的清理......有点。

重点是:你仍然必须自己捕捉这些例外。除非你告诉它,否则unittest不会捕获异常,并且在未捕获异常的情况下,不会调用tearDown方法。