pytest 用例依赖

2023-11-01

应用场景:

     1. 创建订单之前,需要先添加购物车

     2. 在执行订单接口用例之前,要保证添加购物车接口用例完成,并且是pass

 

应用办法:

  •     可以使用pytest插件

pytest插件介绍

    1.官方插件地址介绍:https://docs.pytest.org/en/latest/plugins.html,可点击,查看插件列表,或直接访问第2步地址

    2. 插件列表网址:https://plugincompat.herokuapp.com 包含很多插件包,大家可依据工作的需求选择使用。

    3. 在插件列表中找到,dependency名字,该插件管理测试用例依赖关系    

 

 

pytest 插件dependency安装

1. 点击上面图片中pytest-dependency链接,进入下个页面,里面详细介绍了该插件以及安装方法

2. 直接pip进行安装即可,如果python3,可以使用pip3 install pytest-dependency进行安装,看到如下内容,表示安装成功

pytest 插件dependency使用

英文好的可以直接看官方文档:https://pytest-dependency.readthedocs.io/en/stable/usage.html#basic-usage

1. 单独运行订单接口(test_order),代码如下

import pytest



def test_cart():
    print("添加到购物车")



def test_order():
    print("创建订单")

2. 我们的目的是要增加依赖

3. 可以使用安装的插件dependency来实现,代码如下

@pytest.mark.dependency()
def test_cart():
    print("添加到购物车")

@pytest.mark.dependency(depends=["test_cart"])
def test_order():
    print("创建订单")

   代码解释:

      * 只需要在测试用例增加@pytest.mark.dependency() 标识即可,这里面要注意,假如是order依赖cart,故在order的用例上,需要增加参数depends,depends对应测试用例的名称,这里要注意,如果要执行用例必须按pytest的默认运行规则,即用例前要加上test_,而且顺序要注意,要先执行test_cart在执行test_order,如果要先执行test_order,查看依赖时发现test_cart这个用例没有执行认为结果不通过,所以就不会执行,结果会显示skip

4. 来,我们执行一下,看下结果

5. 假如先执行创建订单,后添加购物车,结果是不是上面我们分析的那样呢,我们还看一下代码和结果

代码:只是调换了用例的顺序,执行顺序:test_order -> test_cart

@pytest.mark.dependency(depends=["cart"],scope="module")
def test_order():
    print("创建订单")

@pytest.mark.dependency(name='cart')
def test_cart():
    print("添加到购物车")

结果,会发现test_order是skipped,忽略掉了未执行:

6. 下面我们调回最开始的顺序,让test_cart置为false,我们来看一下test_order的结果,应该也是skipped

代码:

@pytest.mark.dependency(name='cart')
def test_cart():
    print("添加到购物车")
    assert False

@pytest.mark.dependency(depends=["cart"])
def test_order():
    print("创建订单")

结果,一个失败,一个忽略未执行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytest 用例依赖 的相关文章

  • pytest:无法模拟我的班级的 __init__

    我有一个习惯Db类 具有基本操作 我正在尝试围绕它编写测试 在 init 在我的班级中 我正在连接到我想避免的实际数据库 因为我只是编写单元测试 不需要连接到实际数据库 这是我的代码 mock patch mydb Db pytest ma
  • 使用固定装置返回值作为 mark.parametrize() 中的值

    我的问题是 是否可以使用夹具的返回值作为参数化中的值 问题是 我想动态获取参数化的可能值 例如 虚拟服务器上的可用系统 当其中一个设备创建虚拟服务器时 我可以访问这些 测试看起来像这样 伪代码 conftest py pytest fixt
  • 使用 pytest 运行trace.py

    我正在尝试使用trace py跑步时pytest 我知道pytest有自己的覆盖率插件pytest cov但限制 每行执行的次数不可用 不允许我现在使用它 同样对于coverage py 我正在尝试这个命令 python3 4 m trac
  • 您将如何对这个 SQLAlchemy Core 查询/函数进行单元测试?

    我正在努力学习如何正确进行单元测试 鉴于这个功能 def get user details req user id users sa Table users db metadata autoload True s sa select use
  • 测试 post 请求时 Django 消息中间件问题

    我正在尝试测试一个 UpdateView 它将一条消息添加到重定向的成功页面 看来我的问题来自messages因为 pytest 返回 django contrib messages api MessageFailure 如果不安装 dja
  • 如果定义了构造函数,pytest 跳过测试类

    我有以下通过 py test 运行的单元测试代码 构造函数的存在会使整个类在运行时跳过 py test v s 已收集 0 件 已跳过 1 件 谁能向我解释 py test 的这种行为吗 我有兴趣了解 py test 行为 我知道不需要构造
  • 如何使用 pytest 对 python datetime.datetime.now 进行猴子补丁?

    我需要测试使用的函数datetime datetime now 做到这一点最简单的方法是什么 您需要 Monkeypatch datetime now 函数 在下面的示例中 我正在创建可以稍后在其他测试中重复使用的夹具 import dat
  • 在 pytest 测试中记录日志

    我想在测试函数中放置一些日志语句来检查一些状态变量 我有以下代码片段 import pytest os import logging logging basicConfig level logging DEBUG mylogger logg
  • 如何为异步流服务器编写 pytest 夹具?

    我一直在尝试学习 asyncio 但找不到任何创建可用于测试服务器代码的 pytest 夹具的示例 一旦服务器启动 我猜它会阻止其他一切 因此测试永远不会运行 pytest asyncio 是否有办法在单独的线程中运行固定装置或其他东西 还
  • 如何在 pytest 中仅运行未标记的测试

    我的 python 测试代码中有几个标记 pytest mark slowtest pytest mark webtest pytest mark stagingtest 我可以使用标记有选择地运行测试 例如pytest m slowtes
  • 如何使用 django-pytest 跟踪 Django 重定向?

    在设置一个档案索引视图 https docs djangoproject com en 2 0 ref class based views generic date based django views generic dates Arch
  • 尝试使用 pytest 在 python 3.10 上执行测试时出错

    如果我尝试使用执行测试pytest使用 python 3 10 我收到以下错误 TypeError required field lineno missing from alias 谷歌说这是一个已知问题 但我找不到解决的方法 如果我用 3
  • Pytest 适用于旧的模拟,但不适用于 unittest.mock

    我正在将一些代码从 Python 2 移植到 3 并且py test玩得不好patch装饰器来自unittest mock 当我使用patch装饰器将模拟传递到测试函数的参数中 py test相反 将该参数解释为固定装置 并且无法设置测试
  • py.test 无法导入我的模块

    我正在努力正确导入 python 我想要实现的是拥有一个包含多个源文件的模块和一个包含单元测试的测试文件夹 无论我做什么 我都无法让 py test 3 执行我的测试 我的目录布局如下所示 module init py testclass
  • pytest - ModuleNotFoundError - python 3.6.4

    我有一个具有以下布局的项目 MANIFEST in README md init py company init py api init py auth py debug py exceptions py reporting py rest
  • Pytest - 如何将参数传递给 setup_class?

    我有一些代码 如下所示 我得到了too few args当我运行它时出错 我没有打电话setup class明确地 所以不确定如何向它传递任何参数 我尝试用以下方法装饰该方法 classmethod 但仍然看到相同的错误 我看到的错误是这样
  • 单元测试 python 代码,其中 configparser 从配置文件中读取

    我是 python 单元测试的新手 我学习并进行了示例单元测试 其中方法接受输入并返回输出 但对于下面提到的代码 我有一些疑问 如何在unittest中模拟init方法的configparser 路径 config program cfg
  • 使用 pytest 动态控制测试顺序

    我想使用逻辑来控制测试的顺序 该逻辑将在它们已经运行时动态地重新排序它们 我的用例是这样的 我使用 xdist 并行化我的测试 每个测试都使用来自公共且有限池的外部资源 某些测试比其他测试使用更多的资源 因此在任何给定时间 当只有一小部分资
  • Django Channels Postgres InterfaceError:连接已关闭

    我似乎无法理解这里的问题 我正在为我的渠道消费者编写测试文档中的描述 https channels readthedocs io en latest topics testing html 我通常会使用 Django 默认的单元测试 但由于
  • 如何全局安装 Python(开发)依赖项,以便我不必在每个 venv 中重新安装它们?

    我希望在为每个项目创建的每个 venv 虚拟环境 中都可以使用一些 Python 依赖项 例如 black flake8 和 pytest 这可能吗 如果可以 如何实现 我想安装这三个once在我的主要 Python 安装下 我必须在启动新

随机推荐

  • 国教 2019级 算法设计与分析 作业集锦(期末作业)

    7 1 寻找第k小的数 20 分 给定若干整数 请设计一个高效的算法 确定第k小的数 输入格式 测试数据有多组 处理到文件尾 每组测试数据的第1行输入2个整数n k 1 k n 1000000 第2行输入n个整数 每个数据的取值范围在0到1
  • Linux内核的配置和编译

    文章目录 前言 1 内核介绍 2 linux内核源码目录结构 3 内核配置和编译实验 4 内核的配置原理 5 menuconfig 6 Kconfig文件详解 7 menuconfig的实验 前言 以下内容基于2 6 35 7版本内核 文件
  • MyBatis和Hibernate相比,优势在哪里

    看到现在好多Web项目用了MyBatis 没感觉MyBatis好到哪里了 从开发效率上讲 不管是Hibernate的反向工程 还是自动建表 关联映射都比MyBatis方便得多 难道仅仅是因为运行速度 Hibernate也有缓存啊 或者 二者
  • 生成带有目录的Markdown格式文档

    什么是Markdown Markdown 是一种轻量级的 标记语言 它的优点很多 目前也被越来越多的写作爱好者 撰稿者广泛使用 使用 Markdown 的优点 专注你的文字内容而不是排版样式 轻松的导出 HTML PDF 和本身的 md 文
  • 性能测试出现:java.net.NoRouteToHostException: Can‘t assign requested address (Address not available)解决方案

    前言 在性能测试中会常常遇到java net NoRouteToHostException Can t assign requested address Address not available 这个问题 什么原因导致的呢 这个原因不一定
  • 全网最全Log配置教程及框架性能比较,看这篇就够了!

    每天早上七点三十 准时推送干货 一 摘要 不管是使用何种编程语言 何种框架 日志输出几乎无处不再 也是任何商业软件中必不可少的一部分 总结起来 日志的用途大致可以归纳成以下三种 问题追踪 通过日志不仅仅包括我们程序的一些bug 也可以在安装
  • VS堆栈溢出异常

    总是会遇到报堆栈溢出异常未处理错误 解决过几次 但是下次还是忘记怎么处理 所以写在博客上做个笔记 错误如图 解决方法 项目解决方案里右键项目 选择属性 在堆栈保留处输入40000000 4G64位电脑经验值 8G内存就要输入80000000
  • TiDB数据库权限管理

    TiDB数据库权限管理 TiDB 的权限管理系统按照 MySQL 的权限管理进行实现 TiDB 支持大部分的 MySQL 的语法和权限类型 本文主要介绍 TiDB 权限相关操作 各项操作需要的权限以及权限系统的实现 权限相关操作 授予权限
  • 将vue默认下载项yarn切换成npm

    今天在使用vue下载时发现 之前默认的npm变成了yarn 不习惯 下面将介绍如何将vue下载默认项yarn切换成npm 第一步 需要找到文档下的 vuerc 第二步 用编辑器 或者可以打开文本的软件 将其打开 打开后是这样的 第三步 其实
  • IDEA的查询引用、调用关系图的功能

    Eclipse的 Call Hierarchy 可以查看一个Java方法或类成员变量的调用树 caller和callee两个方向 非常方便 在IDEA中类似功能被划分到了三个命令 IntelliJ IDEA中可以在主菜单中选择Navigat
  • Git报错 Incorrect username or password (access token) 的解决方式

    错误原因 在使用git的时候 出现 Incorrect username or password access token 这个报错主要就是代表本地保存的gitee或者GitHub的账号还有密码错误 而他们这些账号密码都保存到了window
  • 移动端网络优化

    http b codekk com detail Trinea E7 A7 BB E5 8A A8 E7 AB AF E7 BD 91 E7 BB 9C E4 BC 98 E5 8C 96 一个网络请求可以简单分为连接服务器 gt 获取数据
  • centos python 升级3.7 及pip

    centos 7 6 1810 python3 6升级3 7 查看系统版本 开始升级 1 下载Python 3 7 0 tgz软件包 2 解压编译 3 更改默认python版本 pip2消失的话 查看系统版本 cat etc redhat
  • OSI七层协议大白话解读

    互联网的本质就是一系列的网络协议 这个协议就叫OSI协议 一系列协议 按照功能不同 分工不同 人为的分层七层 实际上这个七层是不存在的 没有这七层的概念 只是人为的划分而已 区分出来的目的只是让你明白哪一层是干什么用的 每一层都运行不同的协
  • Python的学习记录

    Python The Zen of Python by Tim Peters Beautiful is better than ugly Explicit is better than implicit Simple is better t
  • Docker安装与配置阿里云镜像加速

    一 Docker简介 1 Docker是什么 产生背景 开发和运维之间因为环境不同而导致的矛盾 不同的操作系统 软件环境 应用配置等 DevOps 集群环境下每台服务器都配置相同的环境 太麻烦 解决 在我的机器上可以正常工作 的问题 Doc
  • Java IO流处理 面试题汇总

    说明 本节内容来源于网络汇总 输入输出流是相对于内存而言的 1 面试题汇总 1 java中有几种类型的流 2021 08 19更新 从编码方式上 分为字符流和字节流 如上图可知 字节流继承inputStream和OutputStream 字
  • 第二章:25+ Python 数据操作教程(第十三节NUMPY 教程与练习)持续更新

    NumPy Numerical Python 或 Numeric Python 的缩写 是 Python 中对数组和矩阵进行快速数学计算的最基本的软件包之一 在处理多维数据时它也非常有用 集成C C 和FORTRAN工具是一件幸事 它还提供
  • vue路由在使用keep-alive缓存之后第二次进入页面created和mounted不执行问题及解决

    一 keep alive介绍 1 什么是 keep alive Vue js 中 keep alive 是一个内置组件 可以在需要缓存的组件上添加keep alive 标签 使得这个组件被缓存起来 不会被多次渲染和销毁 keep alive
  • pytest 用例依赖

    应用场景 1 创建订单之前 需要先添加购物车 2 在执行订单接口用例之前 要保证添加购物车接口用例完成 并且是pass 应用办法 可以使用pytest插件 pytest插件介绍 1 官方插件地址介绍 https docs pytest or