pytest基础001-初识pytest测试框架
前言
- 目前接触到的测试框架:pytest 和 unittest;
- unittest是很早使用的框架,较于pytest,它用例格式复杂,兼容性差,插件少,但二次开发更方便。本公司还在用……
- pytest 比unittest框架更简洁和高效,且可以兼容 unittest 框架,支持单元测试和复杂的功能测试,可以和appium、selenium结合使用,实现自动化功能测试,和requests结合使用,实现接口测试
- pytest支持300多种插件,一个字:牛🐂
官网介绍,特点如下:
- 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
- 能够支持简单的单元测试和复杂的功能测试
- 支持参数化
- 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
- 支持重复执行(rerun)失败的 case
- 支持运行由 nose, unittest 编写的测试 case
- 可生成 html 报告
- 方便的和持续集成工具 jenkins 集成
- 可支持执行部分用例
- 具有很多第三方插件,并且可以自定义扩展
安装:
pip install -U pytest
查看版本
pytest --version
用例的识别与运行
用例编写规范
- 测试文件以 test_ 开头或以 _test 结尾
- 测试类以 Test 开头 ,并且不能带有 __init__ 方法
- 测试函数以 test_ 开头
- 断言使用基本的 assert 即可
- 所有的包 pakege 必须要有__init__.py 文件
创建文件名为 test_add.py 文件,代码如下:
1 import pytest 2 3 def add(x,y): 4 return x + y 5 6 @pytest.mark.add 7 def test_add(): 8 assert add(1,2) == 3 9 assert add(2,3) == 5 10 assert add(10,2) == 12 11 12 class TestDemo: 13 14 def test_demo(self): 15 x = "hello world" 16 print(f"{x} python") 17 assert 'h' in x 18 19 def test_demo2(self): 20 x = 'hello' 21 assert hasattr(x,"check")
可以直接使用pytest命令运行,pytest会找当前目录以及递归查找子目录下的所有的 test_*.py 或 *_test.py 的文件,把其当做测试文件。在这些文件里,pytest 会收集符合编写规范的函数、类以及方法,当作测试用例并执行。
执行如下:
$ pytest test_add.py .... test_add.py ..F [100%] .... self = <test_add.TestDemo object at 0x7f885351b280> def test_demo2(self): x = 'hello' > assert hasattr(x,"check") E AssertionError: assert False E + where False = hasattr('hello', 'check') test_add.py:28: AssertionError ======================================================= 1 failed, 2 passed in 0.05s ========================================================
结果分析:
执行结果中, F 代表用例未通过(断言错误), . 代表用例通过。如果报错会有详细的错误信息, pytest 也支持运行unittest 模式的用例。
写在最后的话:小白同学愿意和大家一起成长~