IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Pytest -> 正文阅读

[开发测试]Pytest

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功能
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:14:59  更:2021-11-24 08:16:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 5:38:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码