pytest测试框架介绍(1)


1.pytest介绍

  • pytest是一个非常成熟的全功能的python测试框架
  • 简单灵活,易上手
  • 支持参数化

         测试用例的skip和xfail,自动失败重试等处理

  • 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appium等自动化测试、接口自动化测试(pytest+requests);
  • pytest并且具有很多第三方插件,并且可以自定义扩展,比较好用的比如pytest-allure(完美 html测试报告生成),pytest-xdist(多cpu分发)等;
  • 可以很好的和jenkins集成

单元框架类似与unitest,但是比unitest更加成熟

pytest文档:https://docs.pytest.org/en/latest/contents.html

第三方库:https://pypi.org/search/?q=pytest

2.pytest安装与依赖

pip install -U pytest U表示升级

pip insetall pytest-sugar ( sugar可以对我们运行的过程界面进行美化)

pip install pytest-rerunfailures( rerunfailures可以重新运行执行出错的测试用例)

pip install pytest-xdist( xdist多任务并发的执行测试用例)

pip install pytest-assume( assume可以在测试用例里面添加断言,通常是断言出错了就不执行了,但是通过用这个包,就可以即使这个断言出错了,也可以继续执行下一个断言)

pip install pytest-html( html可以生成html结果报告)

....

pip list 查看

pytest -h帮助

3.测试用例的识别与运行

  • 测试文件

    test_*.py

    *_test.py

  • 用例识别

    Test*类包含的所有test_*的方法(测试类不能带有__init__方法)

    不在class中的所有的test_*方法

4.测试用例的识别与运行

终端执行

pytest/py.test

pytest -v   (最高级别信息--verbose)打印详细运行日志信息

pytest -v -s 文件名   (s是带控制台输出结果,也是输出详细运行日志)

pytest 文件名.py     执行单独一个pytest模块 

pytest 文件名.py::类名    运行某个模块里面的某个类

pytest 文件名.py::类名::方法名   运行某个模块里面某个类里面的方法

pytest -v -k "类名and not方法名"  跳过运行某个测试用例

 

执行 pytest test_demo.py::Test_cal2,只运行test_sub 方法

执行 pytest test_demo.py::Test_cal::test_muti,只运行test_muti方法

执行 pytest test_demo.py -k "Test_cal and not test_muti" ,只运行test_demo.py中的非test_muti方法

 

pytest -m[标记名]   @pytest.mark.[标记名]将运行这个有标记的测试用例

pytest -x 文件名 一旦运行报错就停止运行

pytest --maxfail=[num] 当运行错误达到num的时候就停止运行(比如冒烟测试,执行多少个失败的用例就打回)

例如:执行pytest --maxfail=1 test_demo.py,就运行到一个错误停止运行了

5.pytest执行-失败重新运行

场景:测试失败后要重新运行n次,要在重新运行只见添加延迟时间,间隔n秒再运行。

安装:pip install pytest-rerunfailures

执行:pytest --reruns 3 -v -s test_demo.py 

 pytest -v --reruns 3 --reruns-delay 1 test_demo.py (添加延迟时间1s)

6.pytest执行多条断言有失败也都运行

场景:一个方法中写多条断言,通常第一条过不去,下面就不执行了。我们想报错也都执行一下。

安装:

pip install pytest-assume

执行:

pytest.assume(1==4)

pytest.assume(2==4)

 

 6.pycharm中运行

 

三种运行方式:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM