python第一单元测试,python单元测试框架有哪些
我们来说说目前几个和测试有关的东西(全程Python 3)。
Mock
模拟的是个好东西呀,遇到测试中出现的不可预知的或者不稳定因素,就用模拟的来代替。例如查询数据库(当然像目前我们用的MongoDB,由于特别灵活,可以直接在代码里把相应的募捐替换掉),例如异步任务等。举个例子:
导入日志记录
fromunittest.mockimportMock
伐木。基本配置(级别=日志记录.调试)
#代码
class aspspecificexception(异常):
及格
deffoo():
及格
defbar():
尝试:
伐木。信息( enterfunctionfoonow )
foo()
exceptASpecificException:
伐木。异常( wecaughtaspecificexception )
#单元测试
deftest_foo():
foo=Mock(side _ effect=aspspecificexception())# noqa
伐木。信息( enterfunctionbarnow )
酒吧()
伐木。info( everythingjustbefine )
if__name__==__main__:
test_foo()运行一下
root @ arch测试: python test _ demo。巴拉圭
info : root : enterfunctionbarnow
信息:根:输入函数现在
信息3360根:一切都很好一个简单的测试就这么写好了。来,跟我念,嘲笑大法好呀!
doctest
文档测试属于比较简单的测试,写在帮助文本里,这样既能测试用,又能当文档示例,是在是好用之极啊。缺点是,如果测试太复杂,doctest就显得太臃肿了(例如如果测试之前要导入一堆东西)。举个例子:
导入日志记录
伐木。基本配置(级别=日志记录.调试)
deffoo():
AutilityfunctionthatreturnsTrue
foo()
真实的
返回真
if__name__==__main__:
importdoctest
logging.debug(startoftest . )
doctest.testmod()
logging.debug(endoftest . )测试结果
root @ arch测试: python test _ demo。巴拉圭
DEBUG:root:startoftest.
调试:根:测试结束.unittest
这个文档确实有点长,我感觉还是仔细去读一下文档比较好。
强求的
classTestStringMethods(unittest .测试用例):
defsetUp(self):
self.alist=[]
deftearDown(self):
打印(自我列表)
deftest_list(self):
(5):
自我。列表。追加(一)
if__name__==__main__:
unittest.main()输出结果
root @ arch测试: python test _ demo。巴拉圭
[0,1,2,3,4]。
-
Ran1testin0.001sOK
单元测试框架配合上嘲弄,单元测试基本无忧啦。
pytest
上面的单元测试跑起来比较麻烦,当然也可以写一个脚本遍历所有的单元测试文件,然后执行。不过pytest对单元测试有比较好的支持。
pytest默认支持的是函数风格的测试,但是我们可以不用这一块嘛(而且很多时候还是很有用的)。走进项目根目录,输入pytest就可以啦。它会自动发现测试_开头的文件,然后执行其中测试_开头的函数和单元测试的测试_开头的方法。
root @ arch测试3360 py测试
=============================testsessionstarts======================================================
平台linux - Python3.5.2,pytest-3.0.5,py-1.4.31,pluggy-0.4.0
rootdir:/root/tests,inifile:
收集的一个项目
test_afunc.py .
=============================1 passedin 0.03秒======================================================
根@ arch tests :总结
编译器没给大蟒做检查,就只有靠我们手写测试了:(
另外其实pytest和单元测试都有很多强大的特性,例如夹具,例如跳跃掉某一部分测试。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。