一、pytest 的优势
pytest是基于 unittest 之上的单元测试框架,它的优势如下:
- 自动发现测试模块和测试方法
- 默认从当前目录中搜集测试用例,即在那个目录下运行pytest 命令,则从那个目录当中搜索
- 搜索规则:进入目录后,在按照搜索规则搜索用例
- 符合命名规则 test_*.py 或者 *_test.py 的文件
- 以 test_ 开头的函数名
- 以 Test 开头的测试类(没有 _init_ 函数)当中,以 test_ 开头的函数
- import pytest if __name__ == '__main__': pytest.main()
二、与unittest的对比
1.用例设计规划
- unittest
- 测试类必须继承 unittest.TestCase
- 测试函数必须以 “test_” 开头
- 使用defaultTestLoader.descover()加载测试用例时,测试模块( py文件)名称要以test开头
- pytest
- 测试模块文件的文件名必须以"test_ "开头或者以" _test"结尾
- 测试类命名必须以"Test"开头
- 测试函数名必须以"test"开头
- 测试类里面不能使用" _init_ "方法
2.断言对比
- unittest断言
- assertEqual(a, b) 判断a和b是否相等
- assertNotEqual(a, b) 判断a不等于b
- assertTrue(a) 判断a是否为Ture
- assertFalse(a) 判断a是否为False
- assertIn(a, b) a包含在b里面
- asserNotIn(a, b) a不包含在b里面
-
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
-
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
-
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
-
分享他们的经验,还会分享很多直播讲座和技术沙龙
-
可以免费学习!划重点!开源的!!!
-
qq群号:680748947【暗号:csdn11】
3.用例前置和后置
- unittest前置和后置
- 通过setup每个用例执行前执行,teardown每个用例执行后执行
- 通过setupclass类里面所有用例执行前执行,teardownclass类里面所有用例执行后执行
- pytest前置和后置
- 会话级别: session,整个测试执行会话全部用例开始前执行/全部用例执行完后执行
- 模块级别: module,只对模块级别生效,整个.py全部用例开始前执行/全部用例执行完后执行
- 类级别: class,只对类级别生效,整个测试类全部用例开始前执行/全部用例执行完后执行
- 函数级别: function,只对函数级别生效,每个用例开始前和结束后执行一次
4.参数化
- unittest参数化
- 结合ddt模块,在类上面使用@ddt装饰,测试用例的方法上使用@data0来来实现数据驱动
- pytest参数化
- 通过装饰器@pytest.mark.parametrize来实现数据驱动
5.生成报告方式
- pytest
- 通过pytest-html生 成html格式报告
- 通过与allure集成生成优美的allure报告
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。