测试只会python_Python unittest,只有在测试失败时才能执行某些操作

我最近尝试做类似的事情,我找到了出路:

import unittest

class MyTestResult(unittest.TestResult):

def addFailure(self, test, err):

# here you can do what you want to do when a test case fails

print('test failed!')

super(MyTestResult, self).addFailure(test, err)

def addError(self, test, err):

# here you can do what you want to do when a test case raises an error

super(MyTestResult, self).addError(test, err)

class MyUT(unittest.TestCase):

def test_fail(self):

self.assertEqual(1, 2, '123')

self.assertTrue("ABc".isupper())

if __name__ == '__main__':

unittest.main(testRunner=unittest.TextTestRunner(resultclass=MyTestResult))

如果你想根据不同的测试用例类做不同的工作,你可以这样做:

import unittest

class MyUT(unittest.TestCase):

class TestResult(unittest.TestResult):

def addFailure(self, test, err):

print('do something when test case failed')

super(MyUT.TestResult, self).addFailure(test, err)

def addError(self, test, err):

print('test case error')

super(MyUT.TestResult, self).addError(test, err)

def test_fail(self):

self.assertEqual(1, 2, "1=2")

class MyUT2(unittest.TestCase):

class TestResult(unittest.TestResult):

def addFailure(self, test, err):

print('do something else when test case failed')

super(MyUT2.TestResult, self).addFailure(test, err)

def addError(self, test, err):

print('test case error')

super(MyUT2.TestResult, self).addError(test, err)

def test_fail(self):

self.assertEqual(1, 2, "1=2")

if __name__ == '__main__':

classes = [MyUT, MyUT2]

for c in classes:

suite = unittest.TestLoader().loadTestsFromTestCase(c)

unittest.TextTestRunner(resultclass=c.TestResult).run(suite)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值