测试类的名子最好以 TestCase 结尾。测试类中的方法名都需要以 test 开头,因为只有 test 开头的方法才会被自动调用。assertEqual 是 unittest 类最有用的功能之一:断言方法。断言方法用来核实得到的结果是否与期望的一致。代码行 unittest.main() 将运行上面代码中以 test 开头的方法,并得到的输出如下:
1 2 3 4 5
. ---------------------------------------------------------------------- Ran 1 test in0.000s
OK
11.1.3 不能通过的测试
修改 get_formatted_name() 函数,增加一个指定中间名的实参:
1 2 3 4
defget_formatted_name(first, middle, last): """生成整洁的姓名""" full_name = first + ' ' + middle + ' ' + last return full_name.title()
因为增加了参数,再运行上面测试代码时,输入如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
E ====================================================================== ERROR: test_first_last_name (__main__.NamesTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "test_name_function.py", line 8, in test_first_last_name formatted_name = get_formatted_name('janis', 'joplin') TypeError: get_formatted_name() missing 1 required positional argument: 'last'
---------------------------------------------------------------------- Ran 1 test in0.000s
defsetUp(self): """ 创建一个调查对象和一组答案,供使用的测试方法使用 """ question = "What language did you first learn to speak?" self.my_survey = AnonymousSurvey(question) self.responses = ['English', 'Spanish', 'Mandarin']
deftest_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()