Python初學者手冊(14)

小紅花在學習呢發表於2020-10-26

python初學者日記

1.儲存資料:json用法
json.jump()用來儲存數字列表,接受兩個實參:要儲存的資料以及可用於儲存資料的檔案物件。
json.load()將這個列表讀取到記憶體中。
例子1:
import json
numbers = [2, 3, 5, 7, 11, 13]
filename = ‘numbers.json’ #通常使用副檔名.json來指出檔案儲存的資料為JSON格式
with open(filename, ‘w’) as f_obj:
json.dump(numbers, f_obj) #此處有縮排。使用函式json.dump() 將數字列表儲存到檔案numbers.json中
例子2:
import json
filename = ‘numbers.json’
with open(filename) as f_obj:
numbers = json.load(f_obj)
print(numbers)
2.
程式碼的重構:
將程式碼劃分為 一系列完成具體工作的函式。這樣的過程被稱為重構。重構讓程式碼更清晰、更易於理解、更容 易擴充套件。
3.
要為函式編寫測試用例,可先匯入模組unittest以及要測試的函式,再建立一個繼承unittest.TestCase的類,並編寫一系列方法對函式行為的不同方面進行測試。 (Python標準庫中的模組unittest提供了程式碼測試工具)
例子:

import unittest 
from name_function import get_formatted_name 
 
class NamesTestCase(unittest.TestCase):     
"""建立 了一個名為NamesTestCase的類,用於包含一系列針對
   get_formatted_name()的單元測試""" 
   #這個類必須繼承 unittest.TestCase類,這樣Python才知道如何執行你
   #編寫的測試         
   def test_first_last_name(self):      
   #方法名必須以test_打頭,這樣它才 會在我們執行test_name_function.py
   #時自動執行                     
      formatted_name = get_formatted_name('janis', 'joplin')          
      self.assertEqual(formatted_name, 'Janis Joplin') 
 #unittest類最有用的功能之一:一個斷言方法。斷言方法用來核實得到 
 #的結果是否與期望的結果一致。assertEqual()
unittest.main() 

測試類6個常用的斷言方法。

方法用途
assertEqual(a, b)核實a == b
assertNotEqual(a, b)核實a != b
assertTrue(x)核實x為True
assertFalse(x)核實x為False
assertIn( item , list )核實 item 在 list 中
assertNotIn( item , list )核實 item 不在 list 中

檢測類:

import unittest 
from survey import AnonymousSurvey 
 
class TestAnonmyousSurvey(unittest.TestCase): 
    """針對AnonymousSurvey類的測試"""      
     def test_store_single_response(self):      
        """測試單個答案會被妥善地儲存"""        
       question = "What language did you first learn to speak?"         
       my_survey = AnonymousSurvey(question)         
       my_survey.store_response('English')                   
       self.assertIn('English', my_survey.responses) 
 
unittest.main()  
 

方法setUp()
在前面的test_survey.py中,我們在每個測試方法中都建立了一個AnonymousSurvey例項,並在 每個方法中都建立了答案。unittest.TestCase類包含方法setUp(),讓我們只需建立這些物件一 次,並在每個測試方法中使用它們。如果你在TestCase類中包含了方法setUp(),Python將先執行 它,再執行各個以test_打頭的方法。

import unittest 
from survey import AnonymousSurvey 
class TestAnonymousSurvey(unittest.TestCase):    
 """針對AnonymousSurvey類的測試"""        
   def setUp(self):        
  # 建立一個調查物件和一組答案,供使用的測試方法使用                 
    question = "What language did you first learn to speak?" 
    self.my_survey = AnonymousSurvey(question)          
    self.responses = ['English', 'Spanish', 'Mandarin'] 
    
    def test_store_single_response(self):       
      """測試單個答案會被妥善地儲存"""         
      self.my_survey.store_response(self.responses[0])         
      self.assertIn(self.responses[0], self.my_survey.responses)              
      def test_store_three_responses(self):      
         """測試三個答案會被妥善地儲存"""         
         for response in self.responses:             
            self.my_survey.store_response(response)       
         for response in self.responses:             
            self.assertIn(response, self.my_survey.responses) 
 
unittest.main() 
 

方法setUp()做了兩件事情:建立一個調查物件;建立一個答案列表

相關文章