(三)斷言方法
1、斷言介紹
在執(zhí)行測試用例的過程中欠啤,最終用例是否執(zhí)行通過滋戳,是通過判斷測試得到的實際結(jié)果和預(yù)期結(jié)果是否相等決定的跪另,這時會用到斷言方法。
本著沒有消息就是最好的消息的原則,如果斷言成功不采取任何措施(不輸入任何日志)识埋,否則就會觸發(fā)AssertionError
(斷言錯誤)的異常凡伊。
2、常用的斷言方法
斷言方法名稱 | 使用參數(shù) | 驗證 |
---|---|---|
assertEqual() (常用) |
a,b,[msg='測試失敗時打印的信息'] | 斷言a和b是否相等窒舟,相等則測試用例通過 |
assertNotEqual() |
a,b,[msg='測試失敗時打印的信息'] | 斷言a和b是否相等系忙,不相等則測試用例通過。 |
assertTrue() (常用) |
x,[msg='測試失敗時打印的信息'] | 斷言x是否True惠豺,是True則測試用例通過 |
assertFalse() |
x,[msg='測試失敗時打印的信息'] | 斷言x是否false银还,是false則測試用例通過 |
assertIs() |
a,b,[msg='測試失敗時打印的信息'] | 斷言a是否是b,是則測試用例通過 |
assertNotIs() |
a,b,[msg='測試失敗時打印的信息'] | 斷言a是否是b洁墙,不是則測試用例通過 |
assertIsNone() |
x,[msg='測試失敗時打印的信息'] | 斷言x是否None蛹疯,是None則測試用例通過 |
assertIsNotNone() |
x,[msg='測試失敗時打印的信息'] | 斷言x是否None,不是None則測試用例通過热监。 |
assertIn() |
a,b,[msg='測試失敗時打印的信息'] | 斷言a是否在b中捺弦,在b中則測試用例通過 |
assertNotIn() |
a,b,[msg='測試失敗時打印的信息'] | 斷言a是否在b中,不在b中則測試用例通過 |
assertIsInstance() |
a,b,[msg='測試失敗時打印的信息'] | 斷言a是否是b的一個實例孝扛,是則測試用例通過列吼。 |
assertNotIsInstance() |
a,b,[msg='測試失敗時打印的信息'] | 斷言a是否是b的一個實例,不是則測試用例通過苦始。 |
提示:如果a和b斷言失敗寞钥,則輸出msg中定義的信息,如果沒有定義msg盈简,則輸出系統(tǒng)異常凑耻。
3、斷言示例
"""
1.學(xué)習(xí)目標(biāo)
必須掌握unittest中斷言使用
2.語法
2.1 編寫位置
在測試用例中去編寫柠贤,先執(zhí)行測試用例,最后一行斷言类缤。
2.2 使用的斷言方法
注意:前邊a是預(yù)期臼勉,后邊b是測試實際的值
(1)assertEqual(a,b,msg)
斷言a和b是否相等,如果相等,斷言成功,否則斷言失敗
(2)assertTrue(x,msg)
斷言條件x是否為True,如果是,斷言成功,否則斷言失敗
(3)其他斷言用法類似。
2.3 判定斷言結(jié)果
斷言成功,控制臺沒有任何提示
斷言失敗,控制臺AssertionError關(guān)鍵字會出現(xiàn)
3.需求
編寫一個有斷言的測試類
"""
# 1 導(dǎo)入unittest
import unittest
# 2 創(chuàng)建測試類
class Test_demo(unittest.TestCase):
# 3 編寫test case
def test_case_03(self):
"""測試用例3"""
print("執(zhí)行測試用例3")
# 用例步驟執(zhí)行完成后做斷言
# assertEqual斷言a和b是否相等
self.assertEqual(2, 1 + 1, msg="斷言成功")
"""
執(zhí)行結(jié)果:
斷言成功,控制臺沒有任何提示
下面是總測試結(jié)果的日志:
執(zhí)行測試用例3
# 在0.005秒內(nèi)進(jìn)行1次測試
Ran 1 test in 0.005s
# 測試用例全部通過
OK
"""
def test_case_02(self):
"""測試用例2"""
print("執(zhí)行測試用例2")
# assertEqual斷言a和b是否相等
self.assertEqual(3, 1 + 1, msg="斷言失敗")
"""
執(zhí)行結(jié)果:
執(zhí)行測試用例2
斷言失敗
3 != 2
Expected(預(yù)期) :2
Actual(實際) :3
下面會有報錯信息(主要內(nèi)容):
AssertionError: 2 != 3 : 斷言失敗
# 在0.008秒內(nèi)進(jìn)行1次測試
Ran 1 test in 0.008s
# 失敗一個測試用例
FAILED (failures=1)
# 斷言失敗
Assertion failed
"""
def test_case_01(self):
"""測試用例1"""
print("執(zhí)行測試用例1")
# 斷言條件x是否為True
self.assertTrue(1 > 2, msg="條件不成立,斷言失敗")
# 4 編寫普通方法
if __name__ == '__main__':
# 執(zhí)行當(dāng)前測試類中餐弱,以test開頭的測試用例
unittest.main()