def is_skip(): last_result = result.failures[-1] if result.failures else result.errors[-1] if result.errors else None class mytest(unittest.TestCase): def test01_onecase(self):1+1=2 @unittest.skipIf(is_skip(),reason='过')def test02_twocase(self):pass) 如何获取上一条用例的结果
时间: 2023-10-23 10:09:43 浏览: 74
在 unittest 中,可以通过 `self._outcome.result` 获取当前用例的执行结果,其中包含了用例的状态、错误信息等。如果想要获取上一条测试用例的执行结果,可以考虑在 `tearDown()` 方法中进行保存,然后在下一次测试用例执行时读取上一条测试用例的执行结果。
具体实现方法如下:
```python
import unittest
class MyTest(unittest.TestCase):
_last_result = None
def tearDown(self):
self._last_result = self._outcome.result
def test01_onecase(self):
self.assertEqual(1+1, 2)
@unittest.skipIf(_last_result and _last_result.failures, reason='上一条用例失败')
def test02_twocase(self):
pass
```
在上面的示例代码中,我们通过 `_last_result` 变量来保存上一条测试用例的执行结果,然后在 `test02_twocase` 方法中使用 `skipIf()` 装饰器来判断是否跳过该测试用例。具体来说,我们通过判断 `_last_result` 是否存在以及其中是否包含失败的信息来决定是否跳过该测试用例。
需要注意的是,为了方便起见,我们将 `_last_result` 变量定义为了类属性,这样就可以在多个测试用例之间共享。但是,这样做可能会导致测试用例之间的耦合性增加,建议根据实际情况进行调整。
阅读全文