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框架学习笔记(二)

一、addopts参数说明

-s:输出调试信息,包括print打印的信息
-v:显示更详细的信息
-q:显示简略信息,与-v作用相反
-p no:warning :过滤警告
-p no:randomly :disable随机执行
-n=num:启用多线程或分布式运行测试用例。需要安装pytest-xdist插件模块
-k=value:py文件中用例包含value的用例都会被执行
-m=标签:执行被@pytest.mark.标签名标记的用例
-x:只要有一个用例执行失败就停止当前线程的测试执行
–maxfail=num:与-x功能一样,可以自定义用例失败次数
–rerun=num:失败用例重跑,需要安装pytest-rerunfailures插件模块
-l:展示运行过程中的全局变量和局部变量
–collect-only:罗列出所有当前目录下所有的测试模块,测试类及测试函数
–ff:如果上次测试用例出现失败的用例,当使用–ff后,失败的测试用例会首先执行,剩余的用例也会再次执行
–lf:当一个或多个用例失败后,定位到最后一个失败的用例重新运行,后续用例会停止运行
–html=report.html:当前目录生成名为report.html的测试报告,需要安装pytest.html插件模块

二、pytest中的fixture

pytest中的fixture就是对于测试前后进行预备、清理工作的代码分离出核心测试逻辑的一种机制。类似于setup、teardown这种前后置的东西。
fixture的目的就是提供一个固定的基线,在该基础上测试可以可靠的和重复的执行。

pytest中是按照fixture的名称来搜索fixture的,搜索的顺序是:

  • 优先搜索当前测试所在类
  • 再搜索当前测试所在的模块
  • 然后搜索conftest.py
  • 接下来搜索内置的fixture
  • 最后搜索第三方插件

fixture的用途

  • 测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器这些操作都是可以用fixture来实现的
  • 测试用例的前置条件可以使用fixture实现
  • 支持unitest的setup/teardown
  • fixture可以实现unittest不能实现的功能,比如unittest中的测试用例和测试用例之间无法传递参数和数据的,fixture可以解决这个问题

fixture作为参数传入

  • 定义fixture跟定义普通函数差不多,唯一区别就是在函数上架装饰器@pytest.fixture(),fixture的命名不要用test_开头
  • fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture函数名称当作变量传入
  • fixture装饰器里scope有四个级别的参数
  • fixture除scope外还有params、autouse、ids、name等
  • fixture可以返回一个元组、列表或字典
  • fixture和fixture可以相互调用

fixture的源码详解

def fixture(
    fixture_function: Optional[FixtureFunction] = None,
    *,
    scope: "Union[_ScopeName, Callable[[str, Config], _ScopeName]]" = "function",
    params: Optional[Iterable[object]] = None,
    autouse: bool = False,
    ids: Optional[
        Union[
            Iterable[Union[None, str, float, int, bool]],
            Callable[[Any], Optional[object]],
        ]
    ] = None,
    name: Optional[str] = None,
)

param scope:fixture作用的范围,function(default)、class、module、package、session

param params:可选的参数列表,多个参数和函数在测试的时候可以调用

param autouse:如果是True则代表激活并且对所有测试所见;
如果是false(default)需要显示调用来激活这个fixture

param ids:列出所有参数的id以至于可以用到test id中,如果no ids are provided,他们将根据参数自动生成

param name:fixture的名字,默认为装饰器函数的名字。

fixture的作用范围

scope的枚举值的含义:

  • function:每个函数或方法都会调用
  • class:每个类调用一次,一个类中可以有多个方法
  • module:每一个.py文件调用一次,该文件内又有多个function和class
  • session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module

三、pytest中的conftest.py

conftest.py就是存放自定义的fixture的地方

conftest.py的作用范围

作用范围是当前目录包括子目录的测试模块
如果测试根目录和测试子目录都有conftest.py,并且这两个conftest.py中都有一个同名的fixture,测试子目录中的测试用例使用这个命名的fixture,实际生效的测试子目录下的conftest.py中的fixture。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:49:55  更:2022-05-05 11:51:44 
 
开发: 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年5日历 -2024/5/19 15:36:21-

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