Python入門之測試代碼

編寫函數或類時,還可以為其編寫測試。通過測試,可確定代碼面對各種輸入都能夠按要求的那樣工作。程序員都會犯錯,因為每個程序員都必須經常測試其代碼,在用戶發(fā)現(xiàn)問題前找出它們。

測試函數

被測試的代碼,下面是一個簡單的函數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 True:
    first = input("\nPlease give me a first name: ")
    if first == 'q':
        break
    last = input("Please give me a last name: ")
    if last == 'q':
        break
    formatted_name = get_formatted_name(first, last)
    print("\tNeatly formatted name: " + formatted_name + ".")

單元測試和測試用例

Python標準庫中的模塊unittest提供了代碼測試工具。
單元測試用于核實函數的某個防霾呢沒有問題;
測試用例是一組單元測試,這些單元測試儀器一起核實函數在各種情形下的行為都符合要求。良好的測試用例考慮到了函數可能收到的各種收入,包含所有針對這些情形的測試。
全覆蓋式測試用例包含一整套單元測試,涵蓋了各種可能的函數使用方式。
對于大型項目,要實現(xiàn)全覆蓋可能很難。通常,最初只要對針對代碼的重要行為編寫測試即可,等項目給廣泛使用時再考慮全覆蓋。

可通過的測試

創(chuàng)建測試用例的語法需要一段時間才能習慣,但測試用例創(chuàng)建后,再添加針對函數的單元測試就很簡單了。要為函數編寫測試用例,可先導入模塊unittest以及要測試的函數,在創(chuàng)建一個繼承unittest.TestCase的類,并編寫一系列方法對函數行為的不同方面進行測試。

下面test_name_function.py一個只包含一個方法的測試用例,它檢查函數get_formatted_name()在給定名和姓時能否正確的工作。

import unittest
from name_function import get_formatted_name

class NamesTestCase(unittest.TestCase):
    """測試name_function.py"""

    def test_first_last_name(self):
        """能否正切的處理Janis Joplin這樣的姓名嗎?"""
        formatted_name = get_formatted_name('janis', 'joplin')
        self.assertEqual(formatted_name, 'Janis Joplin')

各種斷言方法

  • 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中
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容