因此,我使用以下依赖项创建了一个 Android 自动化项目
这是我的项目结构
在 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
我自己解决了这个问题,使用以下 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/**'
)
}
}
}