ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Pytest

2021-11-23 09:58:20  阅读:207  来源: 互联网

标签:teardown setup fixture pytest Pytest 测试函数 test


1.pytest简介

pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:

  • 1、简单灵活,容易上手,文档丰富;
  • 2、支持参数化,可以细粒度地控制要测试的测试用例;
  • 3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);
  • 4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;
  • 5、测试用例的skip和xfail处理;
  • 6、可以很好的和CI工具结合,例如jenkins

2.安装

  • pip install pytest

3.编写规则

  • 测试文件以test_开头(以_test结尾也可以)
  • 测试类以Test开头,并且不能带有 init 方法
  • 测试函数以test_开头
  • 断言使用基本的assert即可

4.Console参数介绍

  • -v 用于显示每个测试函数的执行结果
  • -q 只显示整体测试结果
  • -s 用于显示测试函数中print()函数输出
  • -x, --exitfirst, exit instantly on first error or failed test
  • -h 帮助

5.Pytest标记

5.1Pytest查找测试策略

  • 默认情况下,pytest会递归查找当前目录下所有以test开始或结尾的python脚本
  • 并执行文件内的所有以test开始或结束的函数和方法

5.2标记测试函数

  • 由于某种原因(如test_func2的功能尚未开发完成),我们只想执行指定的测试函数。在pytest中有集中方式可解决
  • 第一种,显示指定函数名,通过 :: 标记   test_no_mark.py::test_func1
  • 第二种,使用模糊匹配,使用-k选项标识  pytest -k func1_no_mark.py
  • 第三种,使用pytest.mark在函数上进行标记

5.3给用例打标签 

  • 【pytest】
  • marketrs=
  • do:do
  • undo:undo

6.Pytest参数化处理

在pytest中,也可以使用参数化测试,即每组参数都独立执行一次测试,使用的工具:pytest.mark.paramterize(argnames,argvalues)

6.1数据格式

  • 列表
  • 元组
  • 字典

6.2增加可读性

  • 参数化装饰器有一个额外ide参数ids,可以标识每一个测试用例,自定义测试数据结果的显示,为了增加可读性
  • 可以标记每一个测试用例使用的测试数据是什么,适当的增加一些说明

6.3自定义id做标识

  • 除了使用ids参数增加输出可读性外,还可以在参数列表的参数旁边定义一个id值来做标识
  • 跟普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture()

6.4 Pytest fixture

  • 跟普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture()
  • fixture命名不要以test开头,跟用例区分开。fixture是有返回值的,没有返回值默认为None
  • 用例调用fixtue的返回值,直接就是吧fixture的函数名称当作变量名称

6.4.1fixture的scope参数

  • fixture命名不要以test开头,跟用例区分开。fixture是有返回值的,没有返回值默认为None
  • 用例调用fixtue的返回值,直接就是吧fixture的函数名称当作变量名称
  • function:每个test都运行,默认是function的scope
  • class:每个class的所有test只运行一次
  • module:每个module的所有test只运行一次
  • session:每个session只运行一次

6.4.2 setup和teardown操作

  • setup,在测试函数或类之前执行,完成准备工作,例如数据库链接、测试数据、打开文件等
  • teardown,在测试函数或类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等
  • 模块级(setup_module/teardown_moudle)开始于模块始末,全局的
  • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
  • 类级(setup_class/teardown_class)只在类中前后云型一次(在类中)
  • 方法级(setup_method/teardown_method)开始于方法始末(在类中)
  • 类里面的(setup/teardown)运行在调用方法的前后
  • 备注:也可以通过在fixture函数中通过yield实现setup和teardown功能

标签:teardown,setup,fixture,pytest,Pytest,测试函数,test
来源: https://blog.csdn.net/zxj19930410jy/article/details/121486409

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有