176 lines
5.9 KiB
Groovy
176 lines
5.9 KiB
Groovy
pipeline {
|
||
agent any
|
||
|
||
options {
|
||
// 保留最近10次构建
|
||
buildDiscarder(logRotator(numToKeepStr: '10'))
|
||
// 超时时间60分钟
|
||
timeout(time: 60, unit: 'MINUTES')
|
||
}
|
||
|
||
environment {
|
||
// Python路径
|
||
PYTHONPATH = "${WORKSPACE}"
|
||
// Allure结果目录
|
||
ALLURE_RESULTS = "${WORKSPACE}/zhyy/test_case/reports/allure-results"
|
||
// Allure报告目录
|
||
ALLURE_REPORT = "${WORKSPACE}/zhyy/test_case/reports/allure-report"
|
||
}
|
||
|
||
stages {
|
||
stage('Checkout') {
|
||
steps {
|
||
echo '检出代码...'
|
||
checkout scm
|
||
}
|
||
}
|
||
|
||
stage('环境准备') {
|
||
steps {
|
||
echo '准备测试环境...'
|
||
script {
|
||
// 确保Python环境
|
||
sh '''
|
||
python --version
|
||
pip --version
|
||
'''
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('运行测试') {
|
||
steps {
|
||
echo '执行测试用例...'
|
||
script {
|
||
// 根据参数选择运行方式
|
||
def runType = params.RUN_TYPE ?: 'all'
|
||
def testCommand = ''
|
||
|
||
switch(runType) {
|
||
case 'all':
|
||
testCommand = 'python zhyy/test_case/run_tests.py --all --no-report'
|
||
break
|
||
case 'feature':
|
||
def feature = params.FEATURE_NAME ?: ''
|
||
testCommand = "python zhyy/test_case/run_tests.py --feature \"${feature}\" --no-report"
|
||
break
|
||
case 'story':
|
||
def story = params.STORY_NAME ?: ''
|
||
testCommand = "python zhyy/test_case/run_tests.py --story \"${story}\" --no-report"
|
||
break
|
||
case 'dir':
|
||
def dir = params.DIR_PATH ?: ''
|
||
testCommand = "python zhyy/test_case/run_tests.py --dir \"${dir}\" --no-report"
|
||
break
|
||
case 'file':
|
||
def file = params.FILE_PATH ?: ''
|
||
testCommand = "python zhyy/test_case/run_tests.py --file \"${file}\" --no-report"
|
||
break
|
||
case 'keyword':
|
||
def keyword = params.KEYWORD ?: ''
|
||
testCommand = "python zhyy/test_case/run_tests.py --keyword \"${keyword}\" --no-report"
|
||
break
|
||
case 'marker':
|
||
def marker = params.MARKER ?: ''
|
||
testCommand = "python zhyy/test_case/run_tests.py --marker \"${marker}\" --no-report"
|
||
break
|
||
default:
|
||
testCommand = 'python zhyy/test_case/run_tests.py --all --no-report'
|
||
}
|
||
|
||
sh """
|
||
cd ${WORKSPACE}
|
||
${testCommand}
|
||
"""
|
||
}
|
||
}
|
||
post {
|
||
always {
|
||
// 无论成功失败都收集测试结果
|
||
echo '收集测试结果...'
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('生成Allure报告') {
|
||
steps {
|
||
echo '生成Allure报告...'
|
||
script {
|
||
sh """
|
||
cd ${WORKSPACE}
|
||
allure generate ${ALLURE_RESULTS} -o ${ALLURE_REPORT} --clean || echo "Allure报告生成失败,但继续执行"
|
||
"""
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
post {
|
||
always {
|
||
// 发布Allure报告
|
||
allure([
|
||
includeProperties: false,
|
||
jdk: '',
|
||
properties: [],
|
||
reportBuildPolicy: 'ALWAYS',
|
||
results: [[path: 'zhyy/test_case/reports/allure-results']]
|
||
])
|
||
|
||
// 清理工作空间(可选)
|
||
// cleanWs()
|
||
}
|
||
success {
|
||
echo '✓ 测试执行成功'
|
||
// 可以在这里添加成功通知,如发送邮件、钉钉等
|
||
}
|
||
failure {
|
||
echo '✗ 测试执行失败'
|
||
// 可以在这里添加失败通知
|
||
}
|
||
unstable {
|
||
echo '⚠ 测试执行不稳定'
|
||
}
|
||
}
|
||
}
|
||
|
||
// 参数化构建
|
||
properties([
|
||
parameters([
|
||
choice(
|
||
name: 'RUN_TYPE',
|
||
choices: ['all', 'feature', 'story', 'dir', 'file', 'keyword', 'marker'],
|
||
description: '选择运行方式'
|
||
),
|
||
string(
|
||
name: 'FEATURE_NAME',
|
||
defaultValue: '',
|
||
description: 'Feature标签名称(当RUN_TYPE=feature时使用)'
|
||
),
|
||
string(
|
||
name: 'STORY_NAME',
|
||
defaultValue: '',
|
||
description: 'Story标签名称(当RUN_TYPE=story时使用)'
|
||
),
|
||
string(
|
||
name: 'DIR_PATH',
|
||
defaultValue: '接口/SZPurchase',
|
||
description: '测试目录路径(当RUN_TYPE=dir时使用,相对于TestCase目录)'
|
||
),
|
||
string(
|
||
name: 'FILE_PATH',
|
||
defaultValue: '接口/SZPurchase/PurchaseOrderManage.py',
|
||
description: '测试文件路径(当RUN_TYPE=file时使用,相对于TestCase目录)'
|
||
),
|
||
string(
|
||
name: 'KEYWORD',
|
||
defaultValue: 'purchase',
|
||
description: '关键字(当RUN_TYPE=keyword时使用)'
|
||
),
|
||
string(
|
||
name: 'MARKER',
|
||
defaultValue: 'smoke',
|
||
description: 'Pytest标记(当RUN_TYPE=marker时使用)'
|
||
)
|
||
])
|
||
])
|