今天這篇技術(shù)文章要分享的是pytest框架當(dāng)中的斷言。會(huì)從以下幾個(gè)方面來(lái)分享:
從上面也可以看出來(lái),unittest框架的斷言的確是比pytest框架要復(fù)雜很多。
四、pytest框架斷言的使用
除了上面說(shuō)的常用的斷言方法:
assert xx 判斷xx為真
assert not xx 判斷xx不為真
assert a in b 判斷b包含a
assert a == b 判斷a等于b
assert a != b 判斷a不等于b
還可以這么用:
1、想知道斷言失敗時(shí)的一些關(guān)于失敗的原因等說(shuō)明信息,assert也能滿足該功能。
assert 斷言的內(nèi)容,”斷言的說(shuō)明”
2、一些測(cè)試用例中,比如異常測(cè)試用例,測(cè)試的結(jié)果必然是失敗會(huì)報(bào)出異常的。這時(shí)候用例的期望結(jié)果就是該異常。
對(duì)于異常的斷言,Pytest的語(yǔ)法是:with pytest.raises(異常類(lèi)型)
最后給大家附上代碼:
# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author : 九九
# @FileName: test_assert.py
# @Software: PyCharm
import pytest
# 定義一個(gè)測(cè)試類(lèi)
class TestAssert():
# 定義一個(gè)功能
# 傳一個(gè)變量,判斷變量是否為偶數(shù),如果為偶數(shù)則用例通過(guò),否則用例失敗
def func1(self,a):
if a%2==0:
return True
else:
return False
# 定義一個(gè)測(cè)試用例
def test_func1(self):
assert self.func1(3)
# 定義一個(gè)測(cè)試用例,驗(yàn)證包含斷言的方法
def test_in(self):
# 定義一個(gè)列表
list_demo=[1,2,3,4,5,6]
# 驗(yàn)證數(shù)字3是不是在list_demo里面,如果在,則用例通過(guò),否則用例失敗
assert 3 in list_demo
# 定義一個(gè)測(cè)試用例,驗(yàn)證斷言的不包含方法
def test_notin(self):
list_demo = [1, 2, 3, 4, 5, 6]
# 驗(yàn)證數(shù)字7不包含在list_demo里面,如果不包含,則用例通過(guò),否則用例失敗
assert 5 not in list_demo
# 定義一個(gè)測(cè)試用例,驗(yàn)證斷言的判斷相等的方法
def test_ass(self):
name="九九"
assert name=="九","變量的名字,和最終預(yù)期的名字不一致,所以失敗"
# 定義一個(gè)測(cè)試用例,驗(yàn)證異常信息斷言
def test_zero_division(self):
# 斷言異常
with pytest.raises(ZeroDivisionError) as exc:
1/0
# 判斷異常的類(lèi)型是否和預(yù)期一致
assert exc.type==ZeroDivisionError
# 斷言異常的value值和預(yù)期是否一致
assert "division by sss" in str(exc.value)
更多關(guān)于軟件測(cè)試培訓(xùn)的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國(guó)內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢(mèng)想。