unittest用例失败重跑带setup/teardown

简介: 之前在网上可以随便找到unittest的用例失败重跑解决方案,那是加了一个装饰函数,但是却没有带上setup和teardown,这导致重跑的用例没办法启动初始化函数和收尾函数。

在这基础上,稍作改动,给加上了setup和teardown。

废话不多说,直接上代码

import unittest
def log(s, t, n):
    def decorator(xingfangfa):
        print xingfangfa
        def wrapper(*a,**w):
            for i in range(n):
                try:
                    print '-------------------\nNum:', i
                    re = xingfangfa(*a,**w)
                    print 'success \n-------------------'
                    return re
                except Exception:
                    print 'have a error '
                    t(*a)
                    s(*a)
                    print '\n-------------------'
            raise Exception
        return wrapper
    return decorator
class Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.abc = 0
    def setUp(self):
        print 'I am setup','abc:',self.abc
    def tearDown(self):
        print 'I am tearDown','abc:',self.abc
    @log(setUp,tearDown,5)
    def test1(self,q=2):
        self.abc += 1
        print 'do case: ',
        assert self.abc == 3
if __name__ == '__main__':
    unittest.main()

其中 n 表示最大重跑5次

把setUp tearDown当作参数给 重跑装饰器

重跑装饰器相对于传统装饰器增加最外层控制器

相关文章
|
6月前
|
测试技术 Shell API
Playwright系列(3):运行测试用例
Playwright系列(3):运行测试用例
203 1
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
61 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
6月前
|
测试技术
Cypress 运行失败用例的方法
Cypress 运行失败用例的方法
|
测试技术
03-pytest-测试用例setup和teardown
03-pytest-测试用例setup和teardown
|
测试技术
34-pytest-Hooks函数之获取用例执行结果
34-pytest-Hooks函数之获取用例执行结果
|
测试技术
29-pytest-运行上次失败用例
29-pytest-运行上次失败用例
|
测试技术 Python
pytest学习和使用10-Pytest中的测试用例如何跳过执行?
pytest学习和使用10-Pytest中的测试用例如何跳过执行?
99 0
pytest学习和使用10-Pytest中的测试用例如何跳过执行?
pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)
pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)
128 0
|
测试技术 Python
pytest学习和使用15-Pytest用例失败如何重跑?(pytest-rerunfailures的简单使用)
pytest学习和使用15-Pytest用例失败如何重跑?(pytest-rerunfailures的简单使用)
111 0