从 Jenkins 测试运行时 Allure 报告始终为空

问题描述 投票:0回答:1

因此,我使用以下依赖项创建了一个 Android 自动化项目

  1. Android Studio
  2. Python
  3. Pytest
  4. 阿皮姆 我使用 Allure 进行报告,使用 Jenkins 进行 CI/CD 管道。

这是我的项目结构

enter image description here

在 Jenkins 上,我创建了一个管道,这是我的 Jenkinsfile

pipeline {
    agent any
    parameters {
        choice(name: "TEST_STRATEGY",
               choices: ['regression',
                         'login',
                         'sangathan',
                         'dataentryform',
                         'pradeshkaryakartalist',
                         'vibhagkaryakartalist',
                         'loksabhakaryakartalist',
                         'zilakaryakartalist',
                         'vidhansabhakaryakartalist'],
               description: "Test strategy")
    }
    stages {
        stage('Collect Only') {
            steps {
                script {
                    def marker = params.TEST_STRATEGY
                    bat "python -m pytest -m \"login or $marker\" --co"
                }
            }
        }
        stage('Run Tests') {
            steps {
                script {
                    def marker = params.TEST_STRATEGY
                    bat "python -m pytest -m \"login or $marker\" --alluredir=allure-report -v"
                }
            }
        }
        stage('Generate Allure report') {
            steps {
                script {
                    ws('C:/ProgramData/Jenkins/.jenkins/workspace/Saral Android Pipeline/') {
                        allure([
                            includeProperties: false,
                            jdk: '',
                            properties: [],
                            reportBuildPolicy: 'ALWAYS',
                            results: [[path: 'allure-results']]
                        ])
                    }
                }
            }
        }
    }
    post {
        success {
            emailext(
                subject: "Saral Android Pipeline Completed",
                body: "The Jenkins pipeline has completed. Please check the console output for details.",
                recipientProviders: [[$class: 'CulpritsRecipientProvider']],
                to: '[email protected]',
                attachmentsPattern: '**/allure-report/**'
            )
        }
    }
}

现在生成的报告总是空的,我该如何解决这个问题?

这是詹金斯结果

Started by user Sparsh Goyal
Obtained Jenkinsfile from git [email protected]:jarvisconsulting/saral_android_automation.git
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in C:\ProgramData\Jenkins\.jenkins\workspace\Saral Android Pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
The recommended git tool is: C:\Program Files\Git\bin\git.exe
using credential 01ab3e1a-11b5-4fd1-a605-4938a565492e
 > C:\Program Files\Git\bin\git.exe rev-parse --resolve-git-dir C:\ProgramData\Jenkins\.jenkins\workspace\Saral Android Pipeline\.git # timeout=10
Fetching changes from the remote Git repository
 > C:\Program Files\Git\bin\git.exe config remote.origin.url [email protected]:jarvisconsulting/saral_android_automation.git # timeout=10
Fetching upstream changes from [email protected]:jarvisconsulting/saral_android_automation.git
 > C:\Program Files\Git\bin\git.exe --version # timeout=10
 > git --version # 'git version 2.42.0.windows.2'
using GIT_SSH to set credentials ankit
Verifying host key using known hosts file, will automatically accept unseen keys
 > C:\Program Files\Git\bin\git.exe fetch --tags --force --progress -- [email protected]:jarvisconsulting/saral_android_automation.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > C:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/Sparsh-Branch^{commit}" # timeout=10
Checking out Revision 272be0e1e7e8363c13bf0177f9d1a9729cbe94a4 (refs/remotes/origin/Sparsh-Branch)
 > C:\Program Files\Git\bin\git.exe config core.sparsecheckout # timeout=10
 > C:\Program Files\Git\bin\git.exe checkout -f 272be0e1e7e8363c13bf0177f9d1a9729cbe94a4 # timeout=10
Commit message: "Jenkinsfile"
 > C:\Program Files\Git\bin\git.exe rev-list --no-walk 093f9560b4528522ae6e23ab507a373f77cabab6 # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Collect Only)
[Pipeline] script
[Pipeline] {
[Pipeline] bat

C:\ProgramData\Jenkins\.jenkins\workspace\Saral Android Pipeline>python -m pytest -m "login or pradeshkaryakartalist" --co 
============================= test session starts =============================
platform win32 -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0
rootdir: C:\ProgramData\Jenkins\.jenkins\workspace\Saral Android Pipeline
configfile: pytest.ini
plugins: allure-pytest-2.13.2, depends-1.0.1, order-1.1.0
collected 35 items / 25 deselected / 10 selected

<Package Tests>
  <Module LoginPage_test.py>
    <Class TestLoginPage>
      <Function test_EnterMobileNo[8287210847-010203"]>
      <Function test_EnterOTP[8287210847-010203"]>
  <Module PradeshLevelDEPage_test.py>
    <Class TestPradeshLevelDEPage>
      <Function test_Login[8287210847-010203"]>
      <Function test_openPradeshLevelDEPage>
      <Function test_checkPradesh>
      <Function test_fetchDataBySubUnit>
      <Function test_changeMorcha>
      <Function test_changeCell>
      <Function test_changeDepartment>
  <Module LoginPage_test.py>
    <Class TestLoginPage>
      <Function test_logout>

=============== 10/35 tests collected (25 deselected) in 1.62s ================
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Run Tests)
[Pipeline] script
[Pipeline] {
[Pipeline] bat

C:\ProgramData\Jenkins\.jenkins\workspace\Saral Android Pipeline>python -m pytest -m "login or pradeshkaryakartalist" --alluredir=allure-report -v 
============================= test session starts =============================
platform win32 -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 -- C:\Python312\python.exe
cachedir: .pytest_cache
rootdir: C:\ProgramData\Jenkins\.jenkins\workspace\Saral Android Pipeline
configfile: pytest.ini
plugins: allure-pytest-2.13.2, depends-1.0.1, order-1.1.0
collecting ... collected 35 items / 25 deselected / 10 selected

Tests/LoginPage_test.py::TestLoginPage::test_EnterMobileNo[8287210847-010203"] PASSED [ 10%]
Tests/LoginPage_test.py::TestLoginPage::test_EnterOTP[8287210847-010203"] PASSED [ 20%]
Tests/PradeshLevelDEPage_test.py::TestPradeshLevelDEPage::test_Login[8287210847-010203"] SKIPPED [ 30%]
Tests/PradeshLevelDEPage_test.py::TestPradeshLevelDEPage::test_openPradeshLevelDEPage PASSED [ 40%]
Tests/PradeshLevelDEPage_test.py::TestPradeshLevelDEPage::test_checkPradesh PASSED [ 50%]
Tests/PradeshLevelDEPage_test.py::TestPradeshLevelDEPage::test_fetchDataBySubUnit PASSED [ 60%]
Tests/PradeshLevelDEPage_test.py::TestPradeshLevelDEPage::test_changeMorcha PASSED [ 70%]
Tests/PradeshLevelDEPage_test.py::TestPradeshLevelDEPage::test_changeCell PASSED [ 80%]
Tests/PradeshLevelDEPage_test.py::TestPradeshLevelDEPage::test_changeDepartment PASSED [ 90%]
Tests/LoginPage_test.py::TestLoginPage::test_logout PASSED               [100%]

=========== 9 passed, 1 skipped, 25 deselected in 751.48s (0:12:31) ===========
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Generate Allure report)
[Pipeline] script
[Pipeline] {
[Pipeline] ws
Running in C:/ProgramData/Jenkins/.jenkins/workspace/Saral Android Pipeline
[Pipeline] {
[Pipeline] allure
[Saral Android Pipeline] $ C:\ProgramData\Jenkins\.jenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\ALLURE_HOME\bin\allure.bat generate -c -o "C:/ProgramData/Jenkins/.jenkins/workspace/Saral Android Pipeline\allure-report"
allure-results does not exist
Report successfully generated to C:\ProgramData\Jenkins\.jenkins\workspace\Saral Android Pipeline\allure-report
Allure report was successfully generated.
Creating artifact for the build.
Artifact was added to the build.
[Pipeline] }
[Pipeline] // ws
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] emailext
Sending email to: [email protected]
Connection error sending email, retrying once more in 10 seconds...
Connection error sending email, retrying once more in 10 seconds...
Failed after second try sending email
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
python-3.x jenkins jenkins-pipeline pytest allure
1个回答
0
投票

我自己解决了这个问题,使用以下 Jenkinsfile 脚本

pipeline {
    agent any
    parameters {
        choice(name: "TEST_STRATEGY",
               choices: ['regression',
                         'login',
                         'sangathan',
                         'dataentryform',
                         'pradeshkaryakartalist',
                         'vibhagkaryakartalist',
                         'loksabhakaryakartalist',
                         'zilakaryakartalist',
                         'vidhansabhakaryakartalist'],
               description: "Test strategy")
    }
    stages {
        stage('Collect Only') {
            steps {
                script {
                    def marker = params.TEST_STRATEGY
                    bat "python -m pytest -m \"login or $marker\" --co"
                }
            }
        }
        stage('Run Tests') {
            steps {
                script {
                    def marker = params.TEST_STRATEGY
                    bat "python -m pytest -m \"login or $marker\" --alluredir=allure-results -v"
                }
            }
        }
        stage('Generate Allure report') {
            steps {
                script {
                    allure([
                        includeProperties: false,
                        jdk: '',
                        properties: [],
                        reportBuildPolicy: 'ALWAYS',
                        report: 'allure-report',
                        results: [[path: 'allure-results']],
                    ])
                }
            }
        }
    }
    post {
        success {
            emailext(
                subject: "Saral Android Pipeline Completed",
                body: "The Jenkins pipeline has completed. Please check the console output for details.",
                recipientProviders: [[$class: 'CulpritsRecipientProvider']],
                to: '[email protected]',
                attachmentsPattern: '**/allure-report/**'
            )
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.