python基础学习笔记-测试
2018-01-21 23:45
302 查看
python单元测试
部分代码来自《python编程从入门到实践》一书运行测试用例时,每完成一个单元测试,python都打印一个字符:测试通过打印一个句点,错误打印 E,测试导致断言失败打印一个 F
针对单个函数的测试:
测试类继承unittest.TestCase—>class NameTestCase(unittest.TestCase):;测试方法以test_开头—>def test_first_last_name(self):assertEqual()方法比较两个字符串是否相等(断言)
#name_function.py中 def get_formatted_name(first,last,middle=''): if middle: full_name = first + ' ' + middle + ' ' + last else: full_name = first + ' ' + last return full_name.title() ---------- #测试模块:test_name_function.py import unittest from name_function import get_formatted_name class NameTestCase(unittest.TestCase): """测试name_function.py""" def test_first_last_name(self): """能够正确地处理像Janis joplin样的姓名吗""" formatted_name = get_formatted_name('janis','joplin') self.assertEqual(formatted_name,'Janis Joplin') def test_first_last_middle_name(self): """能够正确处理三个串的名字吗""" formatted_name = get_formatted_name('wolgang','mozart','amadeus') self.assertEqual(formatted_name,'Wolgang Amadeus Mozart') unittest.main()
unittest Module中的断言方法
asssertEqual(a,b) a == b;
assertNotEqual(a,b) a != b;
assertTrue(x) x是否为True;
assertFalse(x) x是否为False
assertIn(item,list) 核实item在list中
assertNotIn(item,list) item不在list中
测试类
#要测试的类在suevey.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("Survery results:") for response in self.responses: print('- ' + response) ---------- #测试的方法在test_suevey.py中 import unittest from survey import AnonymousSurvey class TestAnonymousSurvey(unittest.TestCase): """针对Anony...的测试""" def test_store_single_response(self): #用于测试的方法以test_开头,自动执行 """测试单个答案会被妥善存储""" question = "what language did you first learn to speak?" my_survey = AnonymousSurvey(question) #创建实例 my_survey.store_response('English') #存储答案 self.assertIn('English',my_survey.responses) #断言,指出要测试的是responses列表中是否包含'English' def test_store_three_responses(self): """测试三个答案会被妥善存储""" question = "what language did you first learn to speak?" my_survey = AnonymousSurvey(question) responses = ['English','Chinese','mandarin'] for response in responses: my_survey.store_response(response) for response in responses: self.assertIn(response,my_survey.responses) unittest.main()
setUp()方法:
unittest.TestCase类中包含方法setUp(),让我们只需创建这些对象一次并在每一个测试方法中使用它们,如果在TestCase类中包含了方法setUp(),python将先运行setUp()方法再运行test_开头的方法
加入setUp()方法的test_suevey.py模块(注意与上面对比)
import unittest from survey import AnonymousSurvey class TestAnonymousSurvey(unittest.TestCase): """针对Anony...的测试""" def setUp(self): """创建一个调查对象和一组答案,供使用的测试方法使用""" question = "what language did you first learn to speak?" self.my_survey = AnonymousSurvey(question) self.responses = ['English','Chinese','mandarin'] def test_store_single_response(self): #用于测试的方法以test_开头,自动执行 """测试单个答案会被妥善存储""" self.my_survey.store_response(self.responses[0]) #存储答案 self.assertIn(self.responses[0],self.my_survey.responses) #断言,指出要测试的是responses列表中是否包含'English' 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()
相关文章推荐
- <Test-Driven Development with Python>学习笔记 第一部分 测试驱动开发基础
- Python基础学习笔记
- Python学习笔记一 基础知识
- Python学习笔记 02 Python基础
- 【转】python学习笔记-第1章节 基础知识
- Python学习笔记整理(十)Python的if测试
- Python学习笔记 02 Python基础
- Python基础教程学习笔记----第一章
- python基础学习笔记(二)
- Python学习笔记---基础汇总部分
- python学习笔记1:基础知识
- python基础学习笔记(三)
- python基础学习笔记分享版(1)
- Python学习笔记-Python基础
- Python基础教程学习笔记----第三章 字符串
- python学习笔记-第1章节 基础知识
- Python2.7 学习笔记 (一)——基础知识
- Python基础学习笔记四
- Python基础教程学习笔记----第四章 字典
- Python基础学习笔记五