1、测试函数
name_function.py
:
def get_formatted_name(first, last):
"""生成整洁的姓名"""
full_name = first + ' + last
return full_name.title()
names.py
:
from name_function import get_formatted_name as gt
print("在任何时候输入 q 进行退出。")
while True:
first = input("\n请输入一个first name: ")
if first == 'q':
break
last = input("请输入一个last name:")
if last == 'q':
break
formatted_name = gt(first, last)
print("\n整洁的名字是:" + formatted_name + '.')
test_name_function.py
:测试函数
import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
"""测试'name_function.py'"""
#注意!方法名必须以test_打头,这样才会自动运行!
def test_first_last_name(self):#这个测试会通过
formatted_name = get_formatted_name('janis', 'joplin')
self.assertEqual(formatted_name, 'Janis Joplin')#将formatted_name与右值相比,一样则通过
def test_first_last_middle_name(self):#这个测试会失败
formatted_name = get_formatted_name(
'wolfgang', 'mozart', 'amadeus')
self.assertEqual(formatted_name, 'Wolfgang Amadeus Mozart')
unittest.main()
由于第二个测试函数多了一个参数导致测试未通过,我们可以将name_function改为这样:
def get_formatted_name(first, last, middle=''): #设置一个middle默认值参数
"""Generate a neatly-formatted full name."""
if middle:
full_name = first + ' ' + middle + ' ' + last
else:
full_name = first + ' ' + last
return full_name.title()
即可解决。
2、测试类
- 各种断言方法:
assertEqual(a,b) 核实 a==b
assertNotEqual(a,b) 核实 a!=b
assertTrue(x) 核实x为真
assertFalse(x) 核实x为假
assertIn(item,list) 核实item在list中
assertNotIn(item,list) 核实item不在list中
一个要测试的类: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("调查结果:")
for response in self.responses:
print('- ' + response)
调用代码:language_survey.py
from survey import AnonymousSurvey
# 定义一个问题,并创建一个表示调查的AnonymousSurvey对象
question = "你母语学的啥语言?"
my_survey = AnonymousSurvey(question)
# 显示问题并存储答案
my_survey.show_question()
print("输入 q 退出。\n")
while True:
response = input("Language: ")
if response == 'q':
break
my_survey.store_response(response)
# 显示调查结果
print("\n感谢参加的所有人!")
my_survey.show_results()
使用setUp函数的测试代码:test_survey.py
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
"""测试 AnonymousSurvey 类"""
def setUp(self): #优先test_打头的函数运行
"""
创建一个调查对象和一组答案,供使用的测试方法使用
"""
question = "你母语学的啥语言?"
self.my_survey = AnonymousSurvey(question)#创建一个调查对象
self.responses = ['English', 'Spanish', 'Mandarin']#创建一个答案列表
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_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()
3、最后:
- 测试通过:打印一个句点
- 引发错误:打印一个 E
- 断言失败:打印一个 F