1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      Python之單元測(cè)試以及斷言assert的使用-創(chuàng)新互聯(lián)

      單元測(cè)試

      為什么要測(cè)試?

      Web程序開(kāi)發(fā)過(guò)程一般包括以下幾個(gè)階段:[需求分析,設(shè)計(jì)階段,實(shí)現(xiàn)階段,測(cè)試階段]。其中測(cè)試階段通過(guò)人工或自動(dòng)來(lái)運(yùn)行測(cè)試某個(gè)系統(tǒng)的功能。目的是檢驗(yàn)其是否滿足需求,并得出特定的結(jié)果,以達(dá)到弄清楚預(yù)期結(jié)果和實(shí)際結(jié)果之間的差別的最終目的。

      成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供十堰鄖陽(yáng)企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都做網(wǎng)站、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為十堰鄖陽(yáng)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
      測(cè)試的分類:

      測(cè)試從軟件開(kāi)發(fā)過(guò)程可以分為:

      • 單元測(cè)試

        • 對(duì)單獨(dú)的代碼塊(例如函數(shù))分別進(jìn)行測(cè)試,以保證它們的正確性

      • 集成測(cè)試

        • 對(duì)大量的程序單元的協(xié)同工作情況做測(cè)試

      • 系統(tǒng)測(cè)試

        • 同時(shí)對(duì)整個(gè)系統(tǒng)的正確性進(jìn)行檢查,而不是針對(duì)獨(dú)立的片段

      在眾多的測(cè)試中,與程序開(kāi)發(fā)人員最密切的就是單元測(cè)試,因?yàn)閱卧獪y(cè)試是由開(kāi)發(fā)人員進(jìn)行的,而其他測(cè)試都由專業(yè)的測(cè)試人員來(lái)完成。所以我們主要學(xué)習(xí)單元測(cè)試。

      什么是單元測(cè)試?

      程序開(kāi)發(fā)過(guò)程中,寫(xiě)代碼是為了實(shí)現(xiàn)需求。當(dāng)我們的代碼通過(guò)了編譯,只是說(shuō)明它的語(yǔ)法正確,功能能否實(shí)現(xiàn)則不能保證。 因此,當(dāng)我們的某些功能代碼完成后,為了檢驗(yàn)其是否滿足程序的需求。可以通過(guò)編寫(xiě)測(cè)試代碼,模擬程序運(yùn)行的過(guò)程,檢驗(yàn)功能代碼是否符合預(yù)期。

      單元測(cè)試就是開(kāi)發(fā)者編寫(xiě)一小段代碼,檢驗(yàn)?zāi)繕?biāo)代碼的功能是否符合預(yù)期。通常情況下,單元測(cè)試主要面向一些功能單一的模塊進(jìn)行。

      舉個(gè)例子:一部手機(jī)有許多零部件組成,在正式組裝一部手機(jī)前,手機(jī)內(nèi)部的各個(gè)零部件,CPU、內(nèi)存、電池、攝像頭等,都要進(jìn)行測(cè)試,這就是單元測(cè)試。

      在Web開(kāi)發(fā)過(guò)程中,單元測(cè)試實(shí)際上就是一些“斷言”(assert)代碼。

      斷言就是判斷一個(gè)函數(shù)或?qū)ο蟮囊粋€(gè)方法所產(chǎn)生的結(jié)果是否符合你期望的那個(gè)結(jié)果。 python中assert斷言是聲明布爾值為真的判定,如果表達(dá)式為假會(huì)發(fā)生異常。單元測(cè)試中,一般使用assert來(lái)斷言結(jié)果。

      斷言方法的使用:

      斷言語(yǔ)句類似于:

      if not expression:    
          raise AssertionError
       AssertionError

      常用的斷言方法:

      assertEqual     如果兩個(gè)值相等,則pass
      assertNotEqual  如果兩個(gè)值不相等,則pass
      assertTrue      判斷bool值為T(mén)rue,則pass
      assertFalse     判斷bool值為False,則pass
      assertIsNone    不存在,則pass
      assertIsNotNone 存在,則pass

      # 示例1:

      def fibo(x):
          if x == 0:
              resp = 0
          elif x == 1:
              resp = 1
          else:        
              return fibo(x-1) + fibo(x-2)    
          return respassert fibo(5) == 5

      單元測(cè)試的基本寫(xiě)法:

      首先,定義一個(gè)類,繼承自u(píng)nittest.TestCase

      import unittestclass TestClass(unitest.TestCase):
          pass

      其次,在測(cè)試類中,定義兩個(gè)測(cè)試方法

      import unittestclass 
      TestClass(unittest.TestCase):
          #該方法會(huì)首先執(zhí)行,方法名為固定寫(xiě)法
          def setUp(self):
              pass
      
          #該方法會(huì)在測(cè)試代碼執(zhí)行完后執(zhí)行,方法名為固定寫(xiě)法
          def tearDown(self):
              pass

      最后,在測(cè)試類中,編寫(xiě)測(cè)試代碼

      import unittestclass 
      TestClass(unittest.TestCase):
          #該方法會(huì)首先執(zhí)行,相當(dāng)于做測(cè)試前的準(zhǔn)備工作
          def setUp(self):
              pass
      
          #該方法會(huì)在測(cè)試代碼執(zhí)行完后執(zhí)行,相當(dāng)于做測(cè)試后的掃尾工作
          def tearDown(self):
              pass
          #測(cè)試代碼
          def test_app_exists(self):
              pass

      登錄測(cè)試

      • 被測(cè)試的代碼邏輯

      @app.route('/login', methods=['POST'])
      def login():
          username = request.form.get('username')
          password = request.form.get('password')    # 判斷參數(shù)是否為空
          if not all([username, password]):
              result = {            "errcode": -2,            "errmsg": "params error"
              }        return jsonify(result)    # a = 1 / 0
          # 如果賬號(hào)密碼正確
          # 判斷賬號(hào)密碼是否正確
          if username == 'itheima' and password == 'python':
              result = {            "errcode": 0,            "errmsg": "success"
              }        
              return jsonify(result)    
         else:
              result = {            "errcode": -1,            "errmsg": "wrong username or password"
              }        
              return jsonify(result)
      • 單元測(cè)試代碼

      import jsonimport unittest
      from demo1_login import app
      
      class LoginTest(unittest.TestCase):
          """為登錄邏輯編寫(xiě)測(cè)試案例"""
      
          def setUp(self):
              app.testing = True
              self.client = app.test_client()    
              
         def test_empty_username_password(self):
              """測(cè)試用戶名與密碼為空的情況[當(dāng)參數(shù)不全的話,返回errcode=-2]"""
              response = app.test_client().post('/login', data={})
              json_data = response.data
              json_dict = json.loads(json_data)
      
              self.assertIn('errcode', json_dict, '數(shù)據(jù)格式返回錯(cuò)誤')
              self.assertEqual(json_dict['errcode'], -2, '狀態(tài)碼返回錯(cuò)誤')        # TODO 測(cè)試用戶名為空的情況
      
              # TODO 測(cè)試密碼為空的情況
      
          def test_error_username_password(self):
              """測(cè)試用戶名和密碼錯(cuò)誤的情況[當(dāng)?shù)卿浢兔艽a錯(cuò)誤的時(shí)候,返回 errcode = -1]"""
              response = app.test_client().post('/login', data={"username": "aaaaa", "password": "12343"})
              json_data = response.data
              json_dict = json.loads(json_data)
              self.assertIn('errcode', json_dict, '數(shù)據(jù)格式返回錯(cuò)誤')
              self.assertEqual(json_dict['errcode'], -1, '狀態(tài)碼返回錯(cuò)誤')        # TODO 測(cè)試用戶名錯(cuò)誤的情況
      
              # TODO 測(cè)試密碼錯(cuò)誤的情況
      if __name__ == '__main__':
          unittest.main()

      數(shù)據(jù)庫(kù)測(cè)試:

      #coding=utf-8import unittestfrom author_book import *#自定義測(cè)試類,setUp方法和tearDown方法會(huì)分別在測(cè)試前后執(zhí)行。以test_開(kāi)頭的函數(shù)就是具體的測(cè)試代碼。class DatabaseTestCase(unittest.TestCase):
          def setUp(self):
              app.config['TESTING'] = True
              app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@localhost/test0'
              self.app = app
              db.create_all()    def tearDown(self):
              db.session.remove()
              db.drop_all()    #測(cè)試代碼
          def test_append_data(self):
              au = Author(name='itcast')
              bk = Book(info='python')
              db.session.add_all([au,bk])
              db.session.commit()
              author = Author.query.filter_by(name='itcast').first()
              book = Book.query.filter_by(info='python').first()        #斷言數(shù)據(jù)存在
              self.assertIsNotNone(author)
              self.assertIsNotNone(book)

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


      分享名稱:Python之單元測(cè)試以及斷言assert的使用-創(chuàng)新互聯(lián)
      轉(zhuǎn)載來(lái)源:http://ef60e0e.cn/article/doiecj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        云安县| 天水市| 博客| 潼关县| 盖州市| 湾仔区| 大竹县| 西平县| 扎兰屯市| 松原市| 扶绥县| 崇信县| 囊谦县| 安康市| 文水县| 高雄县| 景宁| 渭源县| 龙江县| 兴隆县| 洛扎县| 佳木斯市| 满城县| 浦东新区| 苏尼特右旗| 泰兴市| 马关县| 雅安市| 沂南县| 南通市| 枣强县| 盘锦市| 涞源县| 河津市| 宕昌县| 镇安县| 凯里市| 威海市| 曲水县| 镇宁| 石泉县|