python測試代碼


前言:

編寫函數或者類時,需要編寫測試代碼,來保證其的功能運行是否按預期的那樣工作。在程序添加新的代碼時,用來測試是否會破壞本身的功能。

我們使用python自帶的unittest模塊來測試代碼。

編寫函數:

def get_formatted_name(first,last,middle=''):
    """生成整潔的姓名"""
    if middle:
        full_name = first + ' '+ middle +' '+ last
    else:
        full_name = first + ' ' + last
    return full_name.title() 

編寫測試:

import unittest
from name_function import get_formatted_name

class NameTestCase(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')

    def test_first_last_middle_name(self):
        """能夠正確地處理像Wolfgang Amadeus Mozart這樣的姓名嗎?"""
        formatted_name = get_formatted_name('wolfgang','mozart','amadeus')
        self.assertEqual(formatted_name,'Wolfgang Amadeus Mozart')

unittest.main()

 

編寫類:

class AnonymousSurvey():
    """收集匿名調查問卷的答案"""
    def __init__(self, question):
        """存儲一個問題,並為存儲答案做准備"""
        self.question = question
        self.responses = []

    def show_question(self):
        """顯示調查問卷"""
        print(self.question)

    def store_response(self, new_response):
        """存儲單份調查答卷"""
        self.responses.append(new_response)

    def show_results(self):
        """顯示收集到的所有答卷"""
        print("Survey results")
        for response in self.responses:
            print('- '+ response)

編寫測試:

import unittest
from survey import AnonymousSurvey

class TestAnonymousSurvey(unittest.TestCase):
    """針對AnonymousSurvey類的測試"""
    def test_store_single_response(self):
         """測試三個答案會被妥善地存儲"""
        question = "What language did you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        lists = ['English','China','Japanese']
        for s in lists:
            my_survey.store_response(s)
            self.assertIn(s, my_survey.responses)

unittest.main()

總結:

unittest模塊不僅支持單元測試,在接口和功能測試也能直接套用其中的方法。編寫unittest必須添加繼承unittest.TestCase類,測試的函數必須以test*開頭,以及使用unittest.mian方法來運行此測試模塊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM