直接上代碼:
__author__ = 'zc' import unittest class demoSkipTest(unittest.TestCase): a = 70 b = 50 print(a%b) def test_add(self): """加法""" result = self.a + self.b self.assertEqual(result, 40) def test_add_2(self): self.skipTest("強制跳過示例") result = self.a + self.b self.assertEqual(result, 9) @unittest.skipIf(a > b, u"a>b,正確就強制跳過") def test_sub(self): """減法""" result = self.a - self.b self.assertTrue(result == -30) @unittest.skipUnless(a%b == 2, u"錯誤就跳過") def test_div(self): """除法""" result = self.a / self.b self.assertTrue(result == 1) @unittest.expectedFailure def test_mul01(self): """乘法""" result = self.a * self.b self.assertTrue(result == 350) @unittest.expectedFailure def test_mul02(self): """乘法""" result = self.a * self.b self.assertTrue(result == 3500) if __name__ == "__main__": unittest.main()
運行結果:
Fssxus ====================================================================== FAIL: test_add (__main__.demoSkipTest) 加法 ---------------------------------------------------------------------- Traceback (most recent call last): File "/xxx/run_safe_test.py", line 24, in test_add self.assertEqual(result, 40) AssertionError: 120 != 40 ---------------------------------------------------------------------- Ran 6 tests in 0.000s FAILED (failures=1, skipped=3, expected failures=1, unexpected successes=1)
說明:
最后兩個,先預想這個用例是錯誤的,但是最后一個結果是正確的,所以
expected failures=1 (預想就是錯的)
unexpected successes=1 (沒想到是正確的)
序號 | 方法 | 說明 |
1 | unittest.skip(reason) | 強制跳轉。reason是跳轉原因 |
2 | unittest.skipIf(condition, reason) | 條件跳轉,如果condition是True則跳轉 |
3 | unittest.skipUnless(condition, reason) | 除非conditioin為True,才進行調整 |
4 | unittest.expectedFailure() | 標記該測試預期為失敗 ,如果該測試方法運行失敗,則該測試不算做失敗 |
。