最近读技术性书籍有点感慨,一本好书是多么的重要,尽管现在同一知识面的书很多,但是写的好的还真是难找,看来以后买书需要先调研一番了
如果上过软件工程,那么应该很清楚“软件测试”,但是软件测试说实话,前期准备工作很多,后期测试文档更多,咳咳,想学的自己可以了解一下(这里说个闲话,本科的稍微有点技术的一般都是干这行)
测试代码不等同于做软件测试,因为那玩意基本都是成品化方案,成品化测试流程,“测试代码”,原则很简单,看输入的输出和“预期”是否相同
相同则证明代码逻辑和语法基本没有啥问题(这里先不讨论稳定性之类),但是这里的代码测试有几个问题:
- 原则上要根据软件测试的规范(部分)进行
- 穷尽性不敢保证(软件测试基本要考虑穷尽测试[但也测不完,不然就没补丁了])
- 程序员的主观性较强(因为要写测试代码,不像现在的脚本快测)
- 测试代码本身可能有问题🤣
- 也不一定需要这样干(自己也可以进行输入输出检测,没必要套用这样的语法)
- 个人兴趣
import unittest
该类中的断言方法:
assertEqual(a,b)
assertNotEqual(a,b)
assertIn(item,list)
代码测试就是要检测,输入数据产生的输出是不是和预期相同(利用上面的函数可以实现特定情形检测)
该函数的功能显而易见,能够返回用户的前、后、中间(存在时)名组合字符:
return full_name
如何测试该函数:
- 在另外一文件内部引入函数、测试用类
- 编写指定格式代码进行实例化运行
- 利用固定断言方法进行测试
from Re_12 import get_formatted_name
import unittest
2.编写测试用类:
- 类名随机取(不影响)
- 类必须继承于unit-test.Test-Case
- 测试函数必须要使用(test_)字符作为开头(后续随意)
- 注意断言的参数问题
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基础架构复习完了,在家呆着,看看书总比没事干的好,马上着手一波可视化数据分析,给自己的第一篇论文打个基础,奥里给
测试新主题,在下滑稽,我只是一只滑稽而已~
{{miantian}}
{{kun}} {{shuizhao}} {{dalao}} {{xieyanxiao}}
{{yiwen}}