編寫函數和類別時,還可以編寫測試函數,透過測試可以確定程式碼面對各種輸入都能正常運作。在程式中新增程式碼時,也可以進行測試,確定他們不會破壞程式的既有程式。要經常測試模組。
透過python的模組unittest中的工具來測試程式碼。將明白測試通過是怎麼樣的,未通過是什麼樣的,知道未通過測試怎麼來改善程式碼,知道要為專案編寫多少測試。知道怎麼測試函數和類別。
在程式運作過程中,總是會遇到各種各樣的錯誤。有的錯誤是程式編寫有問題造成的,例如本來應該輸出整數結果輸出了字串,這種錯誤我們通常稱為bug,bug是必須修復的。
Python中的unittest模組提供程式碼測試工具,單元測試用來核實函數某個方面沒有問題。 測試案例是一組單元測試,確保函數在各方面都沒有問題。
全覆蓋式測試案例包含一整套的測試案例,涵蓋了各種可能的函數使用方式。
要為函數編寫測試函數,先導入模組unittest和要測試的涵數,在創建一個繼承unittest.TestCase的類,並編寫一系列方法對函數行為的不同面向進行測試。命名最好帶有test。
name_function.py
def get_formatted_name(first, last): """"取得全名.""" full_name = first + ' ' + last return full_name.title() |
## names.py
from name_function import get_formatted_name print("Enter 'q' at any time to quit .") while 真: first = input("\nPlease give me a first name: ") if first == ' break last = input("Please give me a last name: ") if last == 'q': # #formatted_name = get_formatted_name(first, last) print("\tNeatly formatted name: " + formatted_name + '.') |
#' ## test_name_function.py | |
import unittest | from name_function import get_formatted_name | #class NamesTestCase(unittest.TestCase> ):
def test_first_last_name(self): ## ? |
unittest最有用的功能之一:一個斷言方法,assertEqual斷言方法用來核實得到的結果是否和期望的值一樣。 | 不能通過的測試
模組中的各種斷言方法 | 6個常見斷言|
##用途 |
unittest.TestCase 類別包含方法setUp() ,讓我們只需建立一次對象,並可以在每個測試方法中使用它們。
survey.py
#class AnonymousSurvey(): #"""收集匿名調查問卷的答案""" def __init__(self, question): self. question = question #self.responses = [] def #question(self):# print( question) def store_response(self, new_response): # ) def show_results(self): """顯示收集到的所有答案「"" for response in responses: o 和 ##from survey import AnonymousSurvey##定義一個問題,並建立一個表示調查的AnonymousSurvey物件#question = "What language did you first learn to物件#question = "What language did you first learn to物件 |
#顯示問題並儲存答案my_survey.show_question()
print("Enter 'q' at any time to quit .\n")response = input("Language: ") if response == 'q': ##if response == 'q': ##if response == 'q': #"break break#break #break#break#" my_survey.store_response(response) # 顯示調查結果print("\nThank you to everyone who participated in the survey!") |
test_survey.py
import unittest from survey import AnonymousSurvey #class TestAnonymousSurvey (unittest.TestCase): """針對AnonymousSurvey類別的測試""" #def setUp(self): #def setUp(self): 組答案,供使用的測試方法使用""" question = "What language did you first learn to speak?" #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) test. """測試三個答案會被妥善儲存""" for response in self.responses: for response in self.responses: self.assertIn(response, self.my_survey.responses)##unittest.main( unittest.main(方法setUp() 做了兩件事:建立一個調查物件;建立一個答案清單。 儲存這兩樣東西的變數名稱包含前綴self (即儲存在屬性中),因此可在這個類別的任何 地方使用。這讓兩個測試方法都更簡單,因為它們都不需要建立調查對象和答案。 | 使用int() 來輸入數字
height = input("How tall are you, in inches? ")
height = int(height) #轉換為整數
>>> 4 % 3
1 >>> 5 % 3#2
>>> 6 % 3
#0
#>>> 6 % 3#0>>> 7 % 3 1若一個數可被另一個數整除,餘數就為0,因此求模運算子將會回傳0。你可利用這一點來判斷一個數是奇數還是偶數。
以上是Python基礎匯總的詳細內容。更多資訊請關注PHP中文網其他相關文章!