真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

unittest斷言的使用-創(chuàng)新互聯(lián)

斷言使用

  • 我們可以直接在測(cè)試用例里面添加unittest框架自帶的斷言(也就相當(dāng)于判斷),斷言方法提供了測(cè)試結(jié)果是True還是False,所有的斷言方法都有一個(gè)msg參數(shù),如果指定msg參數(shù)的值,則將該信息作為失敗的錯(cuò)誤信息返回;

    創(chuàng)新互聯(lián)建站是專業(yè)的塔什庫(kù)爾干塔吉克網(wǎng)站建設(shè)公司,塔什庫(kù)爾干塔吉克接單;提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行塔什庫(kù)爾干塔吉克網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
  • 如果斷言失敗則拋出一個(gè)AssertionError,并標(biāo)識(shí)該測(cè)試為失敗狀態(tài);如果成功,則標(biāo)識(shí)該測(cè)試為成功狀態(tài);如果異常,則當(dāng)做錯(cuò)誤來(lái)處理;

先來(lái)看一個(gè)實(shí)例,在一個(gè)測(cè)試類MyTestCase中添加多個(gè)測(cè)試方法和斷言


from unittest import TestCase, main, skip
class MyTestCase(TestCase):
    def setUp(self):
        print('setUp')
    def tearDown(self):
        print('tearDown')
    def test_print1(self):
        print('第一個(gè)測(cè)試用例')
        # unittest框架自帶的斷言,如果不相等,直接拋出異常,相等什么都不做
        self.assertEqual(200, 200, '測(cè)試失敗')
    def test_print2(self):
        print('第二個(gè)測(cè)試用例')
    def test_print3(self):
        print('第三個(gè)測(cè)試用例')
if __name__ == '__main__':
    main()
========輸出========:
setUp
第一個(gè)測(cè)試用例
tearDown
setUp
第二個(gè)測(cè)試用例
tearDown
setUp
第三個(gè)測(cè)試用例
tearDown

這里有三個(gè)測(cè)試用例,每個(gè)測(cè)試用例開始之前都先執(zhí)行了setUp方法,每個(gè)測(cè)試用例之后都執(zhí)行了tearDown方法。如果我們想要忽略某個(gè)測(cè)試用例不執(zhí)行,要怎么做?比如忽略第三個(gè)測(cè)試用例,只需要在第三個(gè)測(cè)試用例之前加上skip裝飾器:


@skip('do not need test_print3')
    def test_print3(self):
        print('第三個(gè)測(cè)試用例')

skip裝飾器

  • 我們可以使用unitest.skip裝飾器跳過(guò)不需要的測(cè)試用例, @unittest .skip(reason) 表示無(wú)條件跳過(guò)測(cè)試用例,reason是用來(lái)說(shuō)明原因的;

  • @unittest .skipIf(conditition,reason) :condititon為true時(shí)跳過(guò)測(cè)試用例;

  • @unittest .skipunless(condition,reason) :condition為False時(shí)跳過(guò)測(cè)試用例;

之前我們學(xué)習(xí)了setup方法和setUpClass方法,會(huì)在每個(gè)測(cè)試用例的前后都執(zhí)行一遍,那如果我們只想要在所有測(cè)試用例的前后執(zhí)行一遍,也就是在整個(gè)類中只執(zhí)行一遍要怎么辦呢,我們可以使用setUpClass方法和tearDownClass方法:


from unittest import TestCase, main, skip
class MyTestCase(TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
    def test_print1(self):
        print('第一個(gè)測(cè)試用例')
        # unittest框架自帶的斷言,如果不相等,直接拋出異常,相等什么都不做
        self.assertEqual(200, 200, '測(cè)試失敗')
    def test_print2(self):
        print('第二個(gè)測(cè)試用例')
    @skip('do not need test_print3')
    def test_print3(self):
        print('第三個(gè)測(cè)試用例')
if __name__ == '__main__':
    main()
==========輸出===========
setUpClass
第一個(gè)測(cè)試用例
第二個(gè)測(cè)試用例
tearDownClass

setUpClass和tearDownClass的使用

  • setup方法和teardown方法在每次執(zhí)行一個(gè)測(cè)試用例時(shí)都會(huì)重新執(zhí)行一遍,所以要想在整個(gè)類中只執(zhí)行一遍可以用setUpClass和tearDownClass方法;

  • setUpClass :需要添加 @classmethod 裝飾器,在一個(gè)類中只會(huì)在所有測(cè)試用例運(yùn)行前調(diào)用一次;

  • tearDownClass :需要添加 @classmethod 裝飾器,在所有測(cè)試用例運(yùn)行后調(diào)用一次;

引入測(cè)試用例集,將測(cè)試用例與測(cè)試集合分開

  • 首先可以先在一個(gè)文件中寫好測(cè)試用例模塊,然后在另一個(gè)文件中導(dǎo)入這個(gè)模塊,再使用 unittest.TestSuite類 創(chuàng)建測(cè)試套件,然后使用這個(gè)類的addTest() 方法將需要被測(cè)試的測(cè)試用例添加到測(cè)試套件中,最后使用 unittest.TextTestRunner類 中的run()方法來(lái)運(yùn)行suite所組裝的測(cè)試用例;
  • 測(cè)試用例模塊

from unittest import TestCase
from unittest import skip
from unittest import main as main_method
class MyTestCase(TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
    def test_print1(self):
        print('第一個(gè)測(cè)試用例')
        self.assertEqual(200, 200, '測(cè)試失敗')
    def test_print2(self):
        print('第一個(gè)測(cè)試用例')
    @skip('do not need test_print3')
    def test_print3(self):
        print('第一個(gè)測(cè)試用例')
if __name__ == '__main__':
    main_method()

  • 測(cè)試集模塊

from test1 import MyTestCase
from unittest import TestSuite, TextTestRunner
suite = TestSuite()
# 在測(cè)試用例集中添加測(cè)試用例, 只添加兩個(gè)測(cè)試的方法
suite.addTest(MyTestCase('test_print1'))
suite.addTest(MyTestCase('test_print3'))
if __name__ == '__main__':
    # 創(chuàng)建測(cè)試runner,執(zhí)行測(cè)試用例集
    runner = TextTestRunner()
    runner.run(suite)
=========輸出=============
setUpClass
第一個(gè)測(cè)試用例
tearDownClass

我們運(yùn)行這段代碼,只有第一個(gè)測(cè)試用例輸出,因?yàn)槲覀冎粚⒌谝粋€(gè)和第三個(gè)測(cè)試用例加入到測(cè)試集中,所有第二個(gè)測(cè)試用例不會(huì)執(zhí)行,而我們?cè)诘谌齻€(gè)測(cè)試用例前面機(jī)上了skip裝飾器會(huì)跳過(guò)此測(cè)試用例,所有第三個(gè)也不會(huì)執(zhí)行啦。

將待測(cè)試函數(shù)、測(cè)試用例、測(cè)試用例集分開

  • 將待測(cè)試函數(shù)、測(cè)試用例、測(cè)試用例集分別放在不同的文件中,先在測(cè)試用例中導(dǎo)入待測(cè)試函數(shù),然后使用斷言判斷函數(shù)是否正確,接著在測(cè)試用例集中創(chuàng)健測(cè)試套件,且將測(cè)試用例加入套件里面,最后運(yùn)行;
  • 測(cè)試函數(shù)

def add(x, y):
    return x + y
def sub(x, y):
    return x - y

  • 測(cè)試用例

from unittest import TestCase
from unittest import skip
from unittest import main as main_method
from add_sub import add, sub
class MyTestCase(TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
    def test_print1(self):
        ret = 1 + 2
        result = add(1, 2)
        self.assertEqual(result, ret, 'test_print1測(cè)試失敗')
    def test_print2(self):
        print('第二個(gè)測(cè)試用例')
    @skip('do not need test_print3')
    def test_print3(self):
        print('第三個(gè)測(cè)試用例')
if __name__ == '__main__':
    main_method()

  • 測(cè)試用例集

from test import MyTestCase
from unittest import TestSuite, TextTestRunner
suite = TestSuite()
# 在測(cè)試用例集中添加測(cè)試用例
suite.addTest(MyTestCase('test_print1'))
suite.addTest(MyTestCase('test_print2'))
suite.addTest(MyTestCase('test_print3'))
if __name__ == '__main__':
    # 創(chuàng)建測(cè)試runner,執(zhí)行測(cè)試用例集
    runner = TextTestRunner()
    runner.run(suite)
========輸出=========
setUpClass
第一個(gè)測(cè)試用例
第二個(gè)測(cè)試用例
tearDownClass

參考: /tupian/20230522/login.html


文章名稱:unittest斷言的使用-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://weahome.cn/article/hpddd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部