【问题标题】:Python unittest - perform different actions based on test result?Python unittest - 根据测试结果执行不同的操作?
【发布时间】:2014-06-16 14:33:32
【问题描述】:

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

【问题讨论】:

标签: python python-2.7 selenium-webdriver


【解决方案1】:

您定义“测试如何结束”。一般原则是每个单元测试应该有一个断言(在 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 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多