程序各斷定中的每一個條件得到各類可能的取值至少知足一次python
一、彌補了斷定覆蓋的不足——對整個斷定的最終取值(真或假)進行度量
二、條件覆蓋不必定能知足斷定覆蓋
三、條件覆蓋不必定能知足語句覆蓋測試
demo.py設計
#encoding:utf-8 A = int(input('請輸入A的值')) B = int(input('請輸入B的值')) X = int(input('請輸入X的值')) if A > 1 and B == 0: X = X / A if A == 2 or X > 1: X = X + 1 print('結束')
用例編號 | 測試用例 | 覆蓋路徑 | 預期結果 |
---|---|---|---|
1 | A=2,B=1,X=4 | a-b-e | X = 5 |
2 | A=-1,B=0,X=1 | a-b-d | X = 1 |
執行用例1 ,斷定(A > 1 and B == 0)爲假 ,不執行 X = X / A;
斷定(A == 2 or X > 1)爲真,執行X = X + 1 ;
輸出 X = 5 ;
程序結束code
執行用例2 ,斷定(A > 1 and B == 0)爲假,不執行X = X / A ;
斷定(A == 2 or X > 1)爲假,不執行X = X + 1 ;
輸出 X = 1 ;
程序結束blog
從上述用例能夠得出:
一、上述用例遺漏覆蓋分支「c」;知足條件覆蓋,但不知足斷定覆蓋
二、上述用例均未執行語句X = X / A;知足條件覆蓋,但不知足語句覆蓋utf-8
# encoding:utf-8 import unittest class TestDemo(unittest.TestCase): def demo(self, A, B, X): if A > 1 and B == 0: X = X / A if A == 2 or X > 1: X = X + 1 return X def test_demo_with_conditional_coverage_1(self): ''' 使用條件覆蓋測試 方法demo A=2,B=1,X=4 ''' X = self.demo(A=2, B=1, X=4) expected = 5 self.assertEqual(expected, X) def test_demo_with_conditional_coverage_2(self): ''' 使用條件覆蓋測試 方法demo A=-1,B=0,X=1 ''' X = self.demo(A=-1, B=0, X=1) expected = 1 self.assertEqual(expected, X) if __name__ == '__main__': unittest.main()