25 python 测试类

论坛 期权论坛 期权     
咸鱼飞龙门   2019-7-13 07:55   1799   0
测试类
在前面的章节中我们编写了针对单个函数的测试,下面我们来编写针对类的测试。
断言方法
在上一节中我们已经使用过断言了。在 unittest.TestCase 中提供了很多断言方法。断言方法可以检查我们认为应该满足的条件是否得到满足。如果条件确实满足,我们对程序行为的假设就得到了确认。我们就可以确信程序没有错误。如果我们认为满足的条件实际上并没有得到满足,那么程序将引发异常。


上面是常用的 6 个断言方法。在其他地方没有找到,就直接拍照放上来了。我么只能在继承 unittest.TestCase 的类中使用这些方法。
  1. 方法类
复制代码
  1. 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)
复制代码
  1. 调用类
复制代码
  1. [/code]
  2. [code]
复制代码
  1. from survey import AnonymousSurvey
复制代码
  1. #定义一个问题,并创建一个表示调查的 AnonymousSurvey 对象question = "what language did you first learn to speak?"my_srrvey = AnonymousSurvey(question)my_srrvey.show_question()print("Enter 'q' at any time to quit\n")while True:    response = input("Language:")    if response == 'q':        break    my_srrvey.store_response(response)#显示调查结果print("\nThank you to everyone who participated in survey!")my_srrvey.show_results()
复制代码


下面我们来编写一个测试类。
  1. 测试类
复制代码
  1. [/code]
  2. [code]import unittest
复制代码
  1. from survey import AnonymousSurveyclass TestSurvey(unittest.TestCase):    """针对AnonymousSurvey类的测试"""    def test_store_single_response(self):        """测试单个答案会被妥善的保存"""        question = "what language did you first learn to speak?"        my_srrvey = AnonymousSurvey(question)        my_srrvey.store_response("Chinese")        self.assertIn('Chinese',my_srrvey.responses)unittest.main()
复制代码


方法SetUp()
如果我们在前面的 test_survey.py 中,需要创建多个测试方法,那么我们需要在每个测试方法中创建了一个 AnonymousSurvey 一个实例,并在每个方法中都创建答案。unittest.TestCase 类包含方法 setup() ,可以使我们只需要创建一次,并在每个测试方法中使用它们。类似于普通类中的构造函数。
  1. import unittestfrom survey import AnonymousSurveyclass TestSurvey(unittest.TestCase):    """针对AnonymousSurvey类的测试"""    def setUp(self):        """创建一个调查对象和一组答案 共使用的测试方法使用"""        question = "what language did you first learn to speak?"        self.my_survey = AnonymousSurvey(question)        self.responses = ["Chinese",'English','Spanish']    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_response(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()
复制代码
笑对人生,能穿透迷雾;笑对人生,能坚持到底;笑对人生,能化解危机;笑对人生,能照亮黑暗。

这样就不用再每一个测试方法里面都去创建对象了。



昨天搬家实在太累,断更一天。嗯,又是变成猪的一天呢。







喜欢记得点一个好看
实在不行点下关注也是可以的

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:15
帖子:3
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP