unittest--前置和后置
前戏
先解决一个问题:pycharm执行某些程序时会默认在unittest框架下执行,从而导致程序报错,怎样解决这个问题呢?File->setting->Tools->Python Intergrated Tools->Default test runner->py.test选择后如果显示未安装,请先安装py.test
import unittest class Test_case(unittest.TestCase): def test01(self): print('第一个测试用例') def test02(self): print('第二个测试用例') if __name__ == '__main__': unittest.main()
结果:
..
第一个测试用例
第二个测试用例
类要继承unittest.TestCase,下面的函数名要以test开头才会执行,.(点)表示成功了多少条用例,F表示失败的用例,E表示程序本身有问题
import unittest class Test_case(unittest.TestCase): def setUp(self): print('我是前置条件') def tearDown(self): print('我是后置条件') def test01(self): print('第一个测试用例') def test02(self): print('第二个测试用例') if __name__ == '__main__': unittest.main()
结果:
.. 我是前置条件 第一个测试用例 我是后置条件 我是前置条件 第二个测试用例 我是后置条件
setup在每条用例执行前执行,teatdown在每条用例执行完之后执行
import unittest class Test_case(unittest.TestCase): @classmethod def setUpClass(cls): print('我是所有用例的前置') @classmethod def tearDownClass(cls): print('我是所有用例的后置') def setUp(self): print('我是前置条件') def tearDown(self): print('我是后置条件') def test01(self): print('第一个测试用例') def test02(self): print('第二个测试用例') if __name__ == '__main__': unittest.main()
结果:
我是所有用例的前置
我是前置条件 第一个测试用例 我是后置条件
我是前置条件 第二个测试用例 我是后置条件 我是所有用例的后置
setUpClass(cls)所有用例执行之前执行,要加@classmethod
tearDownClass(cls)所有用例执行之后执行
import unittest class Test_case(unittest.TestCase): def setUp(self): print('我是前置条件') def tearDown(self): print('我是后置条件') def test01(self): '''第一个测试''' print('test01') def test02(self): '''第二个测试''' print('test02') if __name__ == '__main__': unittest.main(verbosity=2) # 可以加参数
结果:
我是前置条件 test01 (__main__.Test_case) test01 我是后置条件 第一个测试 ... ok
我是前置条件 test02 (__main__.Test_case) test02 第二个测试 ... ok 我是后置条件
verbosity有三个值
0代表得到执行的测试总数和全局结果
1代表得到成功的显示.失败的显示F,错误的显示E
2可以得到详细的信息,可以打印出注释信息,在注释后面显示成功失败的信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)