测试
单元测试和测试用例
单元测试:核实函数的某个方面没有问题;
测试用例:一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求;
全覆盖式测试用例包含一整套单元测试,涵盖了各种可能的函数使用方式。
可通过的测试
要为函数编写测试用例,可先导入模块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()