当 2 个测试用例失败时,Gitlab CI 管道中的测试标记为通过

2024-01-12

我们有一个在 Gitlab 中管理的项目,带有用于构建和测试(pytest、Google 测试)的 CI 管道。我们在 Google 测试中的两三个测试用例失败了。但Gitlab认为测试阶段是成功的。是因为成功率超过90%(任意值)吗?如果我们没有获得 100% 的成功,有没有办法让阶段(以及整个管道)失败?

Here is a screenshot of the pipeline summary: enter image description here

这是该阶段的 yml 脚本:

test_unit_test:
  stage: test
  needs: ["build", "build_unit_test"]
  image: $DOCKER_IMAGE
  rules:
    - if: '$CI_PIPELINE_SOURCE != "merge_request_event"'
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  script: |
    ZIPNAME=`cat _VERSION_.txt`
    ./scripts/gitlab-ci/stage-unittests.sh test_unit_test_report.xml $ZIPNAME
  artifacts:
    reports:
      junit: test_unit_test_report.xml
    expire_in: 1 week

感谢您的任何帮助。 问候。


Gitlab CI/CD 工作不在乎what脚本区域正在执行(因此他们不会查看例如测试通过百分比)。他们唯一用来确定作业是否通过或失败的是退出代码 https://stackoverflow.com/a/1535733/2307873allow_failure https://docs.gitlab.com/ee/ci/yaml/#allow_failure关键词。

在每个命令之后before_script, script, and after_script执行完部分后,Gitlab Runner 检查命令的退出代码以查看是否是0。如果它不为零,则该命令被视为失败,并且如果allow_failure关键字未设置为true为了工作,工作失败了。

所以,对于你的工作,即使tests失败,不知何故脚本存在,退出代码为 0,这意味着命令本身成功完成。本例中的命令是:

ZIPNAME=$(cat _VERSION_.txt)
./scripts/gitlab-ci/stage-unittests.sh test_unit_test_report.xml $ZIPNAME

NOTE:我将你的反引号“`”替换为$(command)语法解释here https://unix.stackexchange.com/a/147424/347720它做同样的事情(执行此命令),但比“命令”有一些优势,包括嵌套和更容易在 markdown 中使用,其中“”表示代码格式。

所以,既然你正在调用一个脚本(./scripts/gitlab-ci/stage-unittests.sh)来运行测试,该脚本本身已成功完成,因此作业已成功完成。查看该脚本,看看您是否能说出为什么即使测试失败,它也能成功完成。

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

当 2 个测试用例失败时,Gitlab CI 管道中的测试标记为通过 的相关文章

  • GO并发编程测试

    我试图确保我的并发程序不存在以下情况 僵局 livelock 饥饿 我找到了以下工具http blog golang org race detector http blog golang org race detector 我尝试编译并运行
  • 单元测试:独立测试与代码重复(DRY)

    我正在迈出单元测试的第一步 并且不确定在单元测试中似乎相互矛盾的两个范式 即 每个单元测试都应该是独立的 不依赖于其他单元测试 不要重复自己 更具体地说 我有一个要测试的导入器 导入器具有 导入 功能 获取原始数据 例如 从 CSV 中取出
  • 调用 Console.ReadLine() 的方法的 C# 单元测试

    我想为名为的类的成员函数创建一个单元测试ScoreBoard它存储了一场比赛中排名前五的球员 问题是我为 SignInScoreBoard 正在呼叫Console ReadLine 这样用户就可以输入他们的名字 public void Si
  • 如何获取Azure DevOps Pipelines中变量的单元测试结果?

    我在 Azure DevOps 中有一个构建管道 并且正在使用 NET Core 任务来应用单元测试 我需要获取变量中单元测试的结果 例如 如果有 10 个测试用例 其中两个失败 我需要得到如下信息 failedTestCases 2 su
  • GitLab 发布临时 IP 禁令 - 403 禁止

    我的 GitLab 实例设置有时会对我们自己的 IP 地址实施 IP 禁令 导致办公室中的所有用户在任何网页或 git 请求上都会收到 403 Forbidden 该禁令的实施是由于身份验证重复出现错误 这完全是一个单独的问题 但我想防止我
  • PHPUnit - 使用配置文件时“未执行测试”

    问题 为了提高代码质量 我决定尝试学习如何使用单元测试来测试我的代码 而不是使用平庸的最佳测试解决方案 我决定使用 Composer 安装 PHPUnit 作为个人库 它可以让我实现常见的数据库功能 起初我没有 PHPUnit 的配置文件
  • 将文件上传到S3的模拟测试用例

    我们如何模拟文件上传到 S3 我尝试过这样的事情 file mock mock MagicMock spec File name FileMock mock patch storages backends s3boto S3BotoStor
  • 是否有用于运行测试组的 JUnit TestRunner?

    我目前正在使用 JUnit 4 并且需要将我的测试分为可以以任意组合有选择地运行的组 我知道 TestNG 具有注释测试以将它们分配到组的功能 但我现在无法迁移到 TestNG 看来这可以通过一些自定义注释和自定义 JUnit TestRu
  • 使用带有 OnException 定义的adviceWith进行Camel路由测试

    我有一个非常简单的 Camel 路由定义 其中只包含一些 OnException 谓词来处理相应的异常和一些日志语句 from hazelcast seda someQueue id someQueueID onException Cust
  • 一旦相关命令更改,如何自动运行 py.test?

    通过autonose或nosy 一旦某些测试文件或相关文件发生更改 它将自动运行nosetests 请问py test是否提供了类似的功能 有没有其他工具可以自动激发py test 您可以安装pytest xdist 插件 http pyp
  • 已删除的测试仍保留在 Xcode 测试导航器中

    我最近从我的项目中删除了一些旧的测试类并删除了这些文件 正如预期的那样 文件被移至垃圾箱并在 git 中显示为已删除 不幸的是 它们定义的测试类和测试用例继续出现在测试导航器中 我尝试过常见的方法 例如清理和重建 以及退出并重新打开 Xco
  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • 包含routeChangeSuccess的AngularJS测试控制器

    我正在尝试创建单元测试来测试导航列表控制器 但在创建测试时遇到问题 这是控制器的代码 navListModule controller NavListCtrl scope NavList function scope NavList sco
  • 如何运行传递给模拟方法的 lambda 函数?

    我想知道是否可以运行作为参数传递给模拟函数的 lambda 函数 并在调用模拟方法时运行它 我正在使用 Mockk 我想象代码是这样的 class DataManager fun submit lambda Int gt Unit val
  • Laravel 集成测试:如何断言一个 URL 已被调用但另一个 URL 没有

    我想测试一个向某个 URL 发出请求的控制器 例如 http example com api say hello 但它不会向另一个 URL 发出请求 例如 http example com api say bye bye 我想测试的控制器功
  • Moq - 如何对方法中引用的更改进行单元测试

    另一天 另一个问题 我的服务层有以下方法 public MatchViewData CreateMatch string user var matchViewData HasReachedMaxNumberOfMatchesLimit us
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 是否有保留用于测试/示例的社会安全号码?

    是否有一个按惯例使用的规范 测试 SSN 因此所有看到它的人都知道它不是真正的 SSN 有多个号码组和一些永远不会被分配的特定号码 数字与任何数字组中的所有零 000 xx 00 xx 0000 http www ssa gov histo
  • 如何使用 google test for C++ 来运行数据组合

    我有一个单元测试 需要针对 200 种可能的数据组合运行 生产实现在配置文件中有要测试的数据 我知道如何模拟这些值 我更喜欢为每个组合编写单独的测试用例 并使用某种方式循环数据 有没有使用 Google test for C 的直接方法 您
  • Protractor e2e 测试表头和 , 标签

    我正在使用下表 我想测试每个标签 th td 标签 该标签中的文本以及该文本的计数 HTML 片段 table class table table striped tbody tr th b a Patient Id a b th th b

随机推荐

  • 对象检测 API 的 Tensorflow ConcatOp 错误

    我正在遵循tensorflow对象检测api指令并尝试训练现有的对象检测模型 faster rcnn resnet101 coco with 我自己的数据集有 50 个类 所以根据我自己的数据集 我创建了 TFRecord 分别用于训练 评
  • 什么时候需要在 Tkinter 应用程序中调用 mainloop?

    我见过的每个 tkinter 教程都声称tkinter mainloop必须调用该函数来绘制窗口和处理事件 并且它们总是调用此函数 即使在 hello world 程序中也是如此 但是 当我在交互式 shell 中尝试这些时 窗口会正确绘制
  • 在Python中,len(list)有什么作用?

    Does len list 每次调用时计算列表的长度 还是返回内置计数器的值 我有一个上下文 我需要每次通过循环检查列表的长度 例如 listData for value in ioread if len listData gt 25 pr
  • Android 版 Firebase 突然无法在我的测试设备上运行

    我正在使用 Firebase 身份验证和实时数据库构建一个应用程序 昨天之前 在测试时它在我的设备中运行良好 但我现在甚至无法登录 Firebase 但该应用程序可以在我朋友的其他设备上运行 这里的实际问题是什么 在自己的真实设备上测试应用
  • jQuery dataTables:使用 jQuery 在单元格中使用换行符/换行符导出

    我正在尝试使用插件 jquery dataTable 生成可导出的数据表 但出于设计原因 我需要在单元格内进行换行 对于 HTML 视图 我简单地使用 br 但是如果我尝试将这个 f e 导出到 PDF 中 它将导致破坏第一个出现的 br
  • 使用 ReactJS 和 React Router 更改每个路由的页面背景颜色?

    使用 ReactJS 和 React Router 前往新路线时如何更改浏览器背景颜色 请参阅下面我的编辑 了解我一路上想到的想法 我可以让它工作 div 在每个页面视图中 但我需要它在完整背景上工作 以便完整浏览器窗口显示背景 我正在使用
  • 追加后如何检查元素是否存在?

    以下脚本应该附加一个元素 我首先检查该元素是否存在 如果不存在 我将创建它并附加它 问题是 由于某种原因 检查似乎不起作用 它不断地一遍又一遍地创建元素 问题 如何检查append后元素是否存在 我的jsfiddle https jsfid
  • 如何将IntelliJ与本地MySQL连接?

    我一直在努力学习如何在本地主机 MySQL 和 IntelliJ 上连接并编写数据库相关任务 那可能吗 如果是 如何实现 连接到本地实例与连接到远程 MySQL 实例本质上相同 只需将 localhost 或 127 0 0 1 替换为您通
  • firebase 可以 100% 离线运行并稍后同步吗?

    我需要构建一个用于任务工作的应用程序 该应用程序可以 100 离线运行 然后在重新连接到互联网时与服务器同步 该应用程序 目前 的数据库中有超过 6000 人 当传教士在现场时需要对其进行搜索 挑战在于我需要在多台笔记本电脑或平板电脑上本地
  • 将数组转换为对象数组

    如何将数组转换为 JavaScript 对象数组 例如我有一个数组 data fruits frozen fresh rotten apples 884 494 494 oranges 4848 494 4949 kiwi 848 33 3
  • 如何将 System.Data.SQLite 合并到单个可执行程序中?

    我正在尝试用 C 创建一个单一可执行应用程序 其中包括 SQLite System Data SQLite 依赖于一个非托管 DLL SQLite Interop dll 因此我无法将其与 ILMerge 合并 如何将 System Dat
  • 给定图上无向图 BFS 的“邻接矩阵”表示并输出顶点

    我可以在二维数组数组中找到BFS和DFS值 但是得分没有增加 我无法确切地弄清楚我做错了哪一部分 当我打印应该的值时 排序是正确的 但成绩仍然是 0 我对你的想法持开放态度 public class BFS DFS public stati
  • 在haproxy中使用环境变量

    希望有人能指出我正确的方向 我正在尝试将 HAProxy 配置为使用环境变量 来自操作系统 作为 acl 语句的一部分 因此 如果在启动或重新加载 HAProxy 时将环境变量设置为 true 则将授予访问权限 如果环境变量设置为 fals
  • bash 中的日期 - 月份没有前导 0 或空格?

    有人知道如何像这样显示日期吗 7 1 2019 我目前有这个 它在月份中添加前导 0 LC ALL nn NO UTF 8 date d m Y 像这样 7 01 2019 我在 lynx dump 命令中使用这些 您已经删除了当天的填充
  • 如何使用 Twitter Bootstrap 获取居中内容?

    我试图遵循一个非常基本的例子 使用起始页和网格系统 http getbootstrap com css grid 我希望以下内容 div class row div class span12 h1 Bootstrap starter tem
  • 大虾使用pdf模板

    我想用大虾生成一个使用PDF模板的文档 我没有收到任何错误 但模板被完全忽略 有谁知道为什么会这样 我真的很感激任何帮助 class JobPdf lt Prawn Document def initialize job super job
  • DI 容器如何工作的最简单解释?

    简单来说和 或在高级伪代码中 DI 容器如何工作以及如何使用 DI 容器的核心是基于以下内容创建对象 mappings接口和具体类型之间 这将允许您从容器请求抽象类型 IFoo f container Resolve
  • 头文件和标准库

    我是编程新手 目前正在学习C 我知道头文件仅包含声明和函数原型 而不包含函数本身 我对么 据我所知 库是一个包含不同目标代码的单个文件 这些目标代码是否必须只能用C语言编写 或者也可以使用其他语言来生成这样的目标代码 在链接时 整个库文件是
  • JXBrowser java.ipc.external=true 虚拟机参数

    我想知道这个论证到底是做什么的 并了解潜在的缺点这个争论可能会导致 我尝试在互联网上搜索这个虚拟机参数 但我找不到任何内容 默认情况下 在 macOS 上 JxBrowser 在 Java 进程中初始化 Chromium 引擎 Chromi
  • 当 2 个测试用例失败时,Gitlab CI 管道中的测试标记为通过

    我们有一个在 Gitlab 中管理的项目 带有用于构建和测试 pytest Google 测试 的 CI 管道 我们在 Google 测试中的两三个测试用例失败了 但Gitlab认为测试阶段是成功的 是因为成功率超过90 任意值 吗 如果我