Python笔记11:使用标准库模块unnittest测试Code(2-测试类)

在1中,我们进行了针对单个函数的案例进行的测试,下面会编写针对类的测试。如果针对类的测试通过了,就能确信对类所做的改进没有意外地破坏其原有的行为。

案例(帮助管理匿名调查的类的测试):

要测试的类名为AnonymousSurvey

survey.py:

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)

接下来我们来测试上面AnonymousSurvey这个类。
test_survey.py:

import unittest
from survey import AnonymousSurvey

class TestAnonymousSurvey(unittest.TestCase):
    """针对AnonymousSurvey类的测试"""

    def setUp(self):
        """创建一个调查对象,供使用地测试方法使用"""
        question = "What language did u first learn to speak?"
        self.my_survey = AnonymousSurvey(question)
        self.responses = ['English', 'Freach', 'Spanish']
        """
        创建了一个调查对象和答案列表,存储这两样东西地列表名前包含self(即存储在属性中),因此可在这个类地任何地方使用。
        这让两个测试方法都变得更简单,因为它们不用分别创建调查对象和答案
        """

    def test_store_single_response(self):
        """测试单个答案会被妥善地存储"""
        self.my_survey.store_response(self.responses[0])
        self.asserIn(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方法用来创建一个调查对象和一组答案,供方法test_store_single_response和test_store_three_response使用,这亮哥方法分别是为了测试单个和三个数据是否被妥善地存储。

注意:每完成一个单元测试,Python都打印一个字符:测试通过时打印一个句点;测试引发错误时打印一个E;测试导致失败时打印一个F。

你可能感兴趣的:(Python)