Re:从非零开始的Python世界生活[11-测试代码]+Python的基础架构复习完毕

最近读技术性书籍有点感慨,一本好书是多么的重要,尽管现在同一知识面的书很多,但是写的好的还真是难找,看来以后买书需要先调研一番

何为测试代码:

如果上过软件工程,那么应该很清楚“软件测试”,但是软件测试说实话,前期准备工作很多,后期测试文档更多,咳咳,想学的自己可以了解一下(这里说个闲话,本科的稍微有点技术的一般都是干这行)

测试代码不等同于做软件测试,因为那玩意基本都是成品化方案,成品化测试流程,“测试代码”,原则很简单,看输入的输出和“预期”是否相同

相同则证明代码逻辑和语法基本没有啥问题(这里先不讨论稳定性之类),但是这里的代码测试有几个问题:

测试用类:

import unittest

该类中的断言方法:

assertEqual(a,b)
assertNotEqual(a,b)
assertIn(item,list)

代码测试就是要检测,输入数据产生的输出是不是和预期相同(利用上面的函数可以实现特定情形检测)

测试函数:

该函数的功能显而易见,能够返回用户的前、后、中间(存在时)名组合字符:

return full_name

如何测试该函数:

1.引入函数和测试用类

from Re_12 import get_formatted_name
import unittest

2.编写测试用类:

class NameTestCase(unittest.TestCase):
	def test_first_last_name(self):
		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('janis','joplin','mozart')
		self.assertEqual(formatted_name,'Janis Mozart Joplin')

当测试没有问题时,即该处的“断言”成立时,则不返回错误信息,同时打印测试时间、OK信息,表明该次测试成功

注意:类不能直接运行,必须借助主测试方法

如果出错,该console会告诉你何处错误(输出和预期不匹配),查找代码,改进一下,继续测试即可,所以之前才会说,这样的测试,不属于真正的“软测”

测试类:

  • 方式和函数的测试相同(大致上)
  • 特殊之处在于测试内部参数实例测试类而非外部
  • 类套类(代码看起来显得冗余的原因)

1.待测类

该类存储调查问题、调查回答以及可以打印问题和回答(内部方法使用内部参数,颇有C++风格)

2.编写测试类(和上测同文件,顺带展示一下多测操作):

class TestAnonymousSurvey(unittest.TestCase):
	def setUp(self):
		question = "What language did you first learn to speak: "
		self.my_survey = AnonymousSurvey(question)
		self.responses = ['English','Spalish','Mandarin']
	def test_store_single_response(self):
		#question = "What language did you first learn to speak: "
		#my_survey = AnonymousSurvey(question)
		#my_survey.store_response('English')
		#self.assertIn('English',my_survey.answers)
		#responses = ['English','Spalish','Mandarin']
		'''
		for response in responses:
			my_survey.store_response(response)
		for response in responses:
			self.assertIn(response,my_survey.answers)
		'''
		self.my_survey.store_response(self.responses[0])
		self.assertIn(self.responses[0],self.my_survey.answers)
	def test_store_three_response(self):
		for response in self.responses:
			self.my_survey.store_response(response)
		'''
		to test_
		'''
		for response in self.responses:
			self.assertIn(response,self.my_survey.answers)
  • 类名随机取(Test-Anonymous-Survey)
  • 使用set-Up初始化参数,使得后续方法内部均可调用
  • test_初始化测试函数字符
  • “断言”直接实现检测
  • for循环多次检测

该测试类嵌套了“待测类”(上图):

self.my_survey = AnonymousSurvey(question)

该测试类,全局初始化了测试用例:

self.responses = ['English','Spalish','Mandarin']

单一测试附带了“列表下标”操作

for循环一步到位全部测一遍,本质上就是利用列表的有序性(字典无序亦可),实现从头至尾的检测,断言操作assert-In(item,list)

测试时间有时为0,正常,因为测试时间太短,CPU频率太高,Python的精度范围给省了(也可以利用特殊方式打印出来,之前也说了,有时间我访问一波)

自此,Python基础架构复习完了,在家呆着,看看书总比没事干的好,马上着手一波可视化数据分析,给自己的第一篇论文打个基础,奥里给

“Re:从非零开始的Python世界生活[11-测试代码]+Python的基础架构复习完毕”的4个回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注


皖ICP备2021003932号
召唤伊斯特瓦尔