首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使管道级网格在pytest作业失败测试时显示为不稳定状态

如何使管道级网格在pytest作业失败测试时显示为不稳定状态
EN

Stack Overflow用户
提问于 2021-06-08 09:07:00
回答 2查看 269关注 0票数 0

我有4个jenkins作业,都是pytest,每个作业的shell命令如下

代码语言:javascript
复制
pytest -v --junitxml=result.xml || exit 0

我添加|| exit 0的原因是希望每个作业一个接一个地运行,甚至任何一个作业都会失败。

我创建一个管道作业,管道脚本如下所示

代码语言:javascript
复制
node {
    stage('win10_chrome90_admin') {
        build job: 'UI_automation_win10_chrome90_admin', propagate: false
    }
    stage('win10_chrome90_salesman') {
        build job: 'UI_automation_win10_chrome90_salesman', propagate: false
    }
    stage('win10_firefox88_admin') {
        build job: 'UI_automation_win10_firefox88_admin', propagate: false
    }
    stage('win10_firefox88_salesman') {
        build job: 'UI_automation_win10_firefox88_salesman', propagate: false
    }
}

因此,每次我运行管道时,舞台视图总是绿色的,我无法判断是否有作业测试失败,实际上,在单击其作业视图后,图像中的第二个作业显示为不稳定的。

当作业测试失败时,是否可以将作业网格显示为黄色(不稳定)?(与单击作业后看到的相同)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-09 08:07:28

在pytest中使用pytest插件pytest-custom-exit-code,所以我的测试作业中的shell命令如下所示

pytest -v --junitxml=result.xml --suppress-tests-failed-exit-code

在我的管道作业中,管道脚本类似于

代码语言:javascript
复制
pipeline {
    agent any
    stages {
        stage('win10_chrome90_admin') {
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
                    build job: 'UI_automation_win10_chrome90_admin'
                }
            }
        }

        stage('win10_chrome90_salesman') {
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
                    build job: 'UI_automation_win10_chrome90_salesman'
                }
            }
        }
        stage('win10_firefox88_admin') {
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
                    build job: 'UI_automation_win10_firefox88_admin'
                }
            }
        }
    }
}

最后,我的管道(依次运行4个测试作业)如下所示,如果任何测试作业测试失败,则阶段网格将显示不稳定(黄色),下一个作业将继续启动。

票数 0
EN

Stack Overflow用户

发布于 2021-06-08 11:29:07

在这种情况下,您可以使用catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'),这样管道就成功了,但是阶段显示为失败。您可以选择buildResult和stageResult的状态,以防它不稳定或失败。

示例管道:在下面的示例中,即使阶段“测试”失败,其他阶段仍将被执行,并且在视图中阶段“测试”将被标记为失败。

代码语言:javascript
复制
stage("Testing") {
          steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
                script {
                         
                        // You can execute your commands without || exit 0
                   }
                }
            }

编辑:还可以通过以下方式添加不稳定行为:

代码语言:javascript
复制
pipeline {
    agent any
    stages {
        stage('win10_chrome90_admin') {
            steps {
               script{
                try {
                
                    build job: 'UI_automation_win10_chrome90_admin'
                    }
                     catch (e){
                   unstable('win10_chrome90_admin failed!')
                   }
               }
            }
        }

        stage('win10_chrome90_salesman') {
            steps {
                script{
                try {
                    build job: 'UI_automation_win10_chrome90_salesman'
                }
                catch (e){
                   unstable('win10_chrome90_salesmanfailed!')
                   }
               }
          }
        }
        stage('win10_firefox88_admin') {
            steps {
              script{
                try {
                
                    build job: 'UI_automation_win10_firefox88_admin'
                    }
                     catch (e){
                   unstable('UI_automation_win10_firefox88_adminfailed!')
                   }
               }  
              }
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67884645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档