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