• 测试

    • 单元测试和测试用例

单元测试:核实函数的某个方面没有问题;

测试用例:一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求;

全覆盖式测试用例包含一整套单元测试,涵盖了各种可能的函数使用方式。

  • 可通过的测试

要为函数编写测试用例,可先导入模块unittest一级要测试的函数,再创建一个集成unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。例如,

import unittestfrom name_function import get_formatted_name class NamesTestCase(unittest.TestCase):    """测试name_function.py"""        def test_first_last_name(self):        formatted_name = get_formatted_name('janis', 'joplin')        self.assertEqual(formatted_name, 'Janis Joplin')        def test_first_middle_last_name(self):        """能够正确处理像wolfgang amadeus mozart这样的名字吗"""        formatted_name = get_formatted_name('wolfgang','mozart','amadeus')        self.assertEqual(formatted_name, 'Wolfgang Amadeus Mozart')        unittest.main()

  • 测试类

    • 各种断言方法

方法

用途

assertEqual(a,b)

判断a,b是否相等

assertNotEqual(a,b)

判断a,b是否不相等

assertTure(x)

判断x为真

assertFalse(x)

判断x为假

assertIn(item, list)

判断item在list里面

assertNotIn(item,list)

判断item不在list里面

  • 使用setUp()

import unittestfrom survey import AnonymousSurvey class TestAnonmyousSurvey(unittest.TestCase):    """针对类的测试"""    def setUp(self):        """创建一个调查对象和一组答案,供使用的测试方法使用"""        question = "What language did you first learn to speak?"        self.my_survey = AnonymousSurvey(question)        self.responses = ['English', 'Chinese', 'Japanese']           def test_store_single_respose(self):        self.my_survey.store_response(self.responses[0])        self.assertIn(self.responses[0], self.my_survey.responses)       def test_store_three_respose(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()