cucumber测试_延长Cucumber测试生命周期

2023-11-18

cucumber测试

总览

本文涉及两件事:

  • 我如何使beforeAll和AfterAll生命周期事件在Cucumber中发生?
  • 在Cucumber测试运行之前,如何使用TestContainers设置被测系统?

不,您正在尝试在博客上进行SEO。

Cucumber的生命周期…

Cucumber的生命周期包括:

  • 上钩之前–每个场景之前
  • 挂机之后–每个场景之后
  • 步骤前
  • 步骤后

就是这样……您可以有条件地运行钩子。

如果有大生命周期怎么办?

您的意思是,如果您需要在每个测试运行的基础上而不是在每个方案的基础上启动被测系统,该怎么办? 还是进行一些后期测试清理?

看来Cucumber本身并不能解决这个问题。

生活有一种需要这种功能的方式。

有没有办法在Cucumber中运行之前和之后?

假设您正在使用JUnit 4,那么以下内容将适用。 我期望有一个等效的JUnit5,但尚未对其进行测试。

您需要了解的内容:

  • CucumberJUnit运行器基于JUnit4 ParentRunner
  • 此类支持JUnit @Rule批注。 特别是@ClassRule
  • 尽管Cucumber本身不支持额外的生命周期,但事实证明JUnit4的内部结构将遵守@ClassRule规则
  • 因此,如果您想围绕测试的执行创建某种行为,则需要创建一个TestRule对象作为Cucumber套件类的static字段,并向其添加@ClassRule

现实生活中的场景

我们有一个应用程序需要部署在docker内部才能运行自动化包。 我们可以使用TestContainers在所有测试运行之前实现这一目标,并且这还将在测试运行结束时整理docker资源。

由于测试容器容器本身就是一个TestRule因此将一个容器注入到测试中非常简单:

 @RunWith (Cucumber. class )  @CucumberOptions (...)  public class TestRunner { 
     @ClassRule 
     static GenericContainer REDIS = new GenericContainer<>( "redis:5.0.3-alpine" ) 
         .withExposedPorts( 6379 ); 
     // obviously we weren't testing redis, but this gives you the idea of a container  } 

在粘合代码内部,然后我们可以返回到全局对象,以要求其提供正确的端口号(因为TestContainers将容器放在给定逻辑端口的随机暴露端口上)。

就这么简单

使用这种使用测试规则的技巧,您可以拥有缺少的Cucumber生命周期挂钩,并且可以将TestContainers元素集成到测试中。

除了……在现实生活中,我要做的事情要复杂得多,因此构建了一个自定义的复合测试规则,以将整个过程编织在一起,并使用@ClassRule来将其链接到生命周期。

而且,如果您使用的是JUnit5,请考虑使用JUnit5扩展而不是规则,并且可以通过某种方式来生成自定义扩展来做很多相同的事情,或者只是以正确的顺序获取扩展注释,而JUnit5可能为您做这一切。

翻译自: https://www.javacodegeeks.com/2020/01/extending-the-cucumber-test-lifecycle.html

cucumber测试

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

cucumber测试_延长Cucumber测试生命周期 的相关文章

  • Tensorflow 不分配完整的 GPU 内存

    Tensorflow 默认分配所有 GPU 内存 但我的新设置实际上只有 9588 MiB 11264 MiB 我预计大约 11 000MiB 就像我的旧设置一样 张量流信息在这里 from tensorflow python client
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • reStructuredText:README.rst 未在 PyPI 上解析

    我有一个托管在 Github 和 PyPI 上的 Python 项目 在 Github 上 https github com sloria TextBlob blob master README rst https github com s
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • Python 3在for循环中更改字典键的值不起作用

    我的 python 3 代码没有按预期工作 def addFunc x y print x y def subABC x y z print x y z def doublePower base exp print 2 base exp d
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • 在seaborn中对箱线图x轴进行排序

    我的数据框round data看起来像这样 error username task path 0 0 02 n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w 39 png 1 0 10 n49vq
  • Selenium 不会在新选项卡中打开新 URL(Python 和 Chrome)

    我想使用 Selenium WebDriver 和 Python 在不同的选项卡中打开相当多的 URL 我不确定出了什么问题 driver webdriver Chrome driver get url1 time sleep 5 driv
  • 使用 HtmlUnit 定位弹出窗口

    我正在构建一个登录网站并抓取一些数据的程序 登录表单是一个弹出窗口 所以我需要访问这个www betexplorer com网站 在页面的右上角有一个登录链接 写着 登录 我单击该链接 然后出现登录弹出表单 我能够找到顶部的登录链接 但找不
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • 在 matplotlib 中绘制多边形的并集[重复]

    这个问题在这里已经有答案了 我正在尝试绘制几个多边形的并集matplotlib 具有一定的 alpha 水平 我当前的代码在交叉点处颜色较深 有没有办法让交叉路口与其他地方的颜色相同 import matplotlib pyplot as
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • Java 正则表达式中的逻辑 AND

    是否可以在 Java Regex 中实现逻辑 AND 如果答案是肯定的 那么如何实现呢 正则表达式中的逻辑 AND 由一系列堆叠的先行断言组成 例如 foo bar glarch 将匹配包含所有三个 foo bar 和 glarch 的任何
  • Pip 无法在 Windows 上安装 Twisted

    我正在尝试在 Windows 8 计算机上安装 Twisted 在 Twisted 官方网站上 只有一个 Windows 版的 Wheel 文件 https twistedmatrix com trac wiki Downloads htt
  • Streamlabs API 405 响应代码

    我正在尝试使用Streamlabs API https dev streamlabs com Streamlabs API 使用 Oauth2 来创建应用程序 因此 首先我将使用我的应用程序的用户发送到一个授权链接 其中包含我的应用程序的客

随机推荐

  • 【LVGL 学习】样式(style)风格学习

    概述 在 LVGL 中 样式都是以对象的方式存在 一个对象可以描述一种样式 每个控件都可以独立添加样式 创建的样式之间互不影响 可以使用 lv style t 类型创建一个样式并初始化 static lv style t style lv
  • 数据结构算法:写一个递归算法来实现字符串的逆序存放

    题目要求 写一个递归算法来实现字符串的逆序存储 要求不另设存储空间 首先我们定一个一个存放字符串的结构体 typedef struct String ElemType data int length String PString 创建字符串
  • 解决IE浏览器报错,对象不支持“assign”属性或方法

    报错页面 报错代码 解决后 解决代码 function doTest if typeof Object assign function Object assign function target use strict if target n
  • 线性回归分析

    文章目录 一 高尔顿数据集进行线性回归分析 1 1 父母平均身高和儿子身高线性回归分析 1 2 父亲身高和儿子身高线性回归分析 1 3 母亲身高和儿子身高线性回归分析 二 Anscombe四重奏数据集进行线性回归分析 一 高尔顿数据集进行线
  • MFC读取Excel(一)

    软件 vs2013 程序功能 MFC读取Excel里的第一个单元格的值 步骤 第一步 创建基于对话框的MFC工程 第二步 添加库 添加Excel类库 在工程名上右键 选择 添加 类 或者点击菜单栏的 项目 gt 添加类 选择 TypeLib
  • Windows下常用的快捷方式

    罗列出windows下我最常用的快捷键 逐步补充 打开我的电脑 win e
  • Kubesphere部署三高商城组织架构说明

    KubeSphere部署三高商城组织架构说明 一 创建企业空间 1 使用ws manager用户登录KubeSphere web控制器 创建企业空间 2 登出控制台 然后以 ws admin 身份重新登录 在企业空间设置中 选择企业空间成员
  • uniapp开发支付宝小程序之上传小程序

    市面上很多关于微信小程序通过uinapp开发的文档 支付宝的文档较少 这里做一下补充 为后浪提供参考 一给窝里giaogiao 通过hbuilder编码小程序后不能直接在支付宝开发者工具中上传 应该先通过HBuilder编译一下在操作 步骤
  • ERP中HR模块的操作与设计--开源软件诞生26

    赤龙ERP的EHR功能讲解 第26篇 用日志记录 开源软件 的诞生 进入地址 点亮星星 祈盼着一个鼓励 博主开源地址 码云 https gitee com redragon redragon erp GitHub https github
  • 51单片机——ADC模数转换、DAC数模转换PWM C语言入门编程

    目录 ADC XPT2046 1 ADC模数转换 数码管上显示AD模块采集电位器的阻值 热敏的温度值 光敏的光值 DAC PWM 1 DAC数模转换 DAC PWM 模块上的指示灯DA1呈呼吸灯效果 由暗变亮再由亮变暗 ADC ADC an
  • 聊聊技术专家谈阿里云史诗级故障

    序言 什么是技术专家 其实也是很懂 是做的时间足够长呢 还是说经历的厂比较多 还是说纸上谈兵比较牛逼 专家嘛 大家都懂的 只会弹别人 喔 是谈别人 原来不是弹 有本事技术专家谈谈自己呗 风言风语 阿里云出现史诗级故障 处理的时间足够长 然后
  • 过去式加ed的发音_「初中英语语法大全」不规则动词过去式和过去分词巧记方法...

    动词的过去式和过去分词是初中英语教学中的重点 而有些动词的不规则变化是这些重点中的难点 但这些不规则变化也不是毫无规律可循的 现将初中英语中一些常用的不规则动词变化介绍如下 一 原形 过去式和过去分词的词形和读音都相同的单词 结尾字母一般是
  • 计算机视觉项目实战(一)、图像滤波和图像混合 Image Filtering and Hybrid Images

    图像滤波和图像混合 Image Filtering and Hybrid Images 项目要求 项目原理 主要函数 my imfilter 函数解释 输入参数 输出参数 主要实现步骤 gen hybrid image 函数解释 输入参数
  • java中JSONArray 遍历方式

    第一种 java8 遍历JSONArray 拼接字符串 public static void main String args JSONArray jSONArray new JSONArray JSONObject jb new JSON
  • Linux中退出编辑模式的命令

    vi 文件 回车后就进入进入编辑模式 按 o 进行编辑 编辑结束 shift 退出编辑模式 然后输入退出命令 1 保存不退出 w 保存文件但不退出vi 编辑 w 强制保存 不退出vi 编辑 w file 将修改另存到file中 不退出vi
  • CNN可视化技术 -- CAM & Grad-CAM详解及pytorch简洁实现

    文章目录 前言 1 CAM Class Activation Map 2 Grad CAM 3 PyTorch中的hook机制 4 Grad CAM的PyTorch简洁实现 参考资料 前言 CNN中的特征可视化大体可分为两类 细节信息 ZF
  • Redis实战篇一 (短信登录)

    Redis企业实战 黑马点评 项目整体架构 项目部署 后端部署 前端部署 短信登陆 基于Session实现登录 集群的Session共享问题 基于Redis实现共享session登录 解决状态登录刷新的问题 登录拦截器的优化 本期学习路线
  • SVN导出版本增量包

    showlog 选择一个或者多个版本 右键 Compare with previous version 选择一个或者多个文件 右键 Expore selection to 最后导出的文件会有其相应的路径
  • 全志F1C200s芯片处理器参数介绍

    F1C200s是全志的一款高度集成 低功耗的移动应用处理器 可用于多种多媒体音视频设备中 全志F1C200s基于ARM 9架构 集成了DDR 它支持高清视频解码 包括H 264 H 263 MPEG 1 2 4等 它还集成了音频编解码器和I
  • cucumber测试_延长Cucumber测试生命周期

    cucumber测试 总览 本文涉及两件事 我如何使beforeAll和AfterAll生命周期事件在Cucumber中发生 在Cucumber测试运行之前 如何使用TestContainers设置被测系统 不 您正在尝试在博客上进行SEO