pycharm中测试的三种模式(unittest框架、pytest框架、普通模式)
2019-02-19 18:17
435 查看
一、python运行脚本的三种模式
通过查阅资料才发现,原来python的运行脚本的方式有多种:
- 例如普通模式运行,不会自动去加载测试用例执行
- unittest 测试框架运行模式,可以自动去发现testcase并执行 pytest
- 测试框架运行模式,就是我们上面2个步骤都是使用pytest测试框架运行的
重要原则:第一次按照何种模式执行测试用例,后续都会按照这种方式去执行
二、pycharm中 no tests were found
首次使用测试用例时,按照网上教程会首次出现 no tests were found 的情况。
上图中会出现
no test were found的情况。
根本原因是在定义的类中的函数没有以test开头。
三、理解unittest框架中的setUpClass、setUp、tearDown、tearDownClass
python unitest单元测试框架中,有几个特殊的情况如下:
setUp():每个测试方法运行前运行,测试前的初始化工作。一条用例执行一次,若N次用例就执行N次,根据用例的数量来定。
setUpClass():所有的测试方法运行前运行,为单元测试做前期准备,但必须使用@classmethod装饰器进行修饰,整个测试过程中只执行一次。
tearDown():每个测试方法运行结束后运行,测试后的清理工作。一条用例执行一次,若N次用例就执行N次。
tearDownClass():所有的测试方法运行结束后运行,为单元测试做后期清理工作,但必须使用@classmethod装饰器进行修饰,整个测试过程中只执行一次。
四、默认使用pytest框架去执行unittest框架中的测试用例
此时程序中运行默认使用pytest框架,如图中所示:
五、取消默认并且在unittest框架下运行
pycharm执行某些程序时会默认在unittest框架下执行,从而导致程序报错,怎样解决这个问题呢?
File->setting->Tools->Python Intergrated Tools->Default test runner->py.test
选择后如果显示未安装,请先安装py.test
六、普通运行模式,导出测试报告
import unittest import time,HTMLTestRunner class AlienTest(unittest.TestCase): @classmethod def setUpClass(cls): print("TestCase start running ") def test_1_run(self): print("hello world_1") def test_2_run(self): print("hello world_2") def test_3_run(self): print("hello world_3") if __name__ == '__main__': print('hello world') suite = unittest.makeSuite(AlienTest) now = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime()) filename = "/Users/test/The_Order_Of_TestCase/Report/" + now + "_result.html" fp = open(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title=u'ALIEN测试报告', description=u'ALIEN用例执行情况:') runner.run(suite) # 关闭文件流,不关的话生成的报告是空的 fp.close()
默认是使用unittest模式运行的,结果如下,其实这样不会执行main()函数,更不会导出报告
最终通过创建普通模式的运行模式,然后按照如下方式可以运行
最终的测试报告如下:
七、总结
- (1)使用pytest测试框架时候,不需要main()函数,系统可以自动识别测试用例并执行。
- (2)即使包含main()函数,点击它去执行,也不会去执行main()函数。
- (3)具体是使用哪个测试框架执行,不是通过main()函数设置的,在别的地方。
相关文章推荐
- Macaca+HTMLTestRunner测试报告模式修改,基于python unittest 测试框架扩展
- Python之使用unittest框架和HTMLTestRunner.py文件实现多个测试用例执行与测试报告生成
- python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)
- [翻译]pytest测试框架(二):使用
- 接口测试-工作心得记录十(目前测试框架总结基于unittest)
- selenium---unittest框架测试用例函数执行顺序 优先级
- Python中unittest测试框架简介
- Python-unittest测试框架
- 自动化测试框架工具pytest教程
- python的unittest测试框架的扩展浅谈
- Python接口测试之unittest框架(五)
- Ruby中的TestUnit测试框架
- selenium---unittest框架测试用例函数执行顺序 优先级
- iOS下的unit test——写在测试框架之后
- Python接口测试之unittest框架
- pyhton得unittest测试框架
- selenium一个完整的unittest测试框架格式(单线程,非测试报告)
- Python Unittest 自动化单元测试框架Demo
- pycharm 解除默认unittest模式
- python pytest测试框架介绍一