linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总

问题1

gitlab占用cpu内容过高

修改配置文件,有挂载就在容器内部修改,没有的话就修改宿主机中的文件

1. 编辑配置文件(养成习惯,修改前先备份)
cd /etc/gitlab

cp gitlab.rb gitlab.rbbak
vi gitlab.rb  

2. 配置文件中调整参数如下:
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
puma['worker_memory_limit_min'] = "100 * 1 << 20"
puma['worker_memory_limit_max'] = "250 * 1 << 20"
sidekiq['concurrency'] = 8
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 4
prometheus_monitoring['enable'] = false

3. 应用更改后的配置、重启gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
 

问题2

测试用例中既有api又有ui,但是在用例中可能会遇到有些python的库只适用于windows系统),实际操作过程中我们运行自动化的环境是linux系统,这个问题主要有两个方向去规避:1.jenkins有提供节点管理,添加一个从节点(windows系统)2.修改代码使用linux和windows都通用的库去实现自动化

这种主要针对的是第一种方式提供解决方法

1.配置全局变量jdk和allure(windows系统)(路径只需要选到bin目录的上一层就够了)

2.jenkins系统管理>>节点管理>>新建节点

修改下图标记的地方,工具选择已配置的全局变量相对应的就行了

端口可以不填,默认为50000(jenkins容器要开放50000端口) 

如何开放已创建容器的端口参照这篇文章

运行中的Docker容器添加映射端口_954L的博客-CSDN博客_docker新增端口映射

配置完节点管理展示 

3.点击左侧节点名称,进入相应节点的管理界面,下载代理的jar包(agent.jar)丢到本地

4.jar所在目录敲下cmd进入命令行模式

copy一下jenkins界面的命令

又看到connected就表示连接成功了

3.jenkins流水线风格集成钉钉,构建通知

Jenkinsfile脚本如下:

pipeline {
    agent {node('xxxx')}
    stages {
         stage('UI测试'){
            steps {
                //下载代码文件
                checkout scm
                echo '执行UI测试用例'
                script{
                    try {
                       bat "pytest  -vs --alluredir=report/temp  --clean-alluredir"
                       bat "copy report\\environment.properties report\\temp"
                        }
                    catch(Exception err) {
                       println(err);}}

                                        }}
//         stage('api测试'){
//             steps {
//
//                 echo "执行api测试用例"
//                 script{
//                     try{
//                         bat "pytest test_case/api -vs --alluredir=report/temp"}
//                     catch(Exception err){println(err);}}
//
//         //         sh "cp ./report/environment.properties ./allure-report/environment.properties"
//             }}
        stage('测试报告'){
            steps {
                echo '生成测试报告'
        //         allure includeProperties: false, jdk: '',results: [[path: 'report/temp']]
                allure commandline: 'allure_win', jdk: 'java_win', results: [[path: 'report/temp']]
            }}
    }
    post {
        success {
            dingtalk (
                robot: "111",
                type:'MARKDOWN',
                atAll: false,
                title: "${env.JOB_NAME}",
                messageUrl: '${env.JOB_URL}',
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 构建编号:${env.BUILD_NUMBER}",
                    "- 构建节点:${env.NODE_NAME}",
                    "- 构建结果:<font color=#00CD00 >${currentBuild.result}</font>",
                    "- 持续时间:${currentBuild.durationString}".split('and counting')[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                    "- 日志:${env.BUILD_URL}console",
                    "- 测试报告:${env.BUILD_URL}allure"
                ]
           )
        }
        failure {
            dingtalk (
                robot: "111",
                type:'MARKDOWN',
                atAll: false,
                title: "${env.JOB_NAME}",
                messageUrl: '${env.JOB_URL}',
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 构建编号:${env.BUILD_NUMBER}",
                    "- 构建节点:${env.NODE_NAME}",
                    "- 构建结果:<font color=#FF0000 >${currentBuild.result}</font>",
                    "- 持续时间:${currentBuild.durationString}".split('and counting')[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                    "- 日志:${env.BUILD_URL}console",

                ]
           )
        }
        unstable {
            dingtalk (
                robot: "111",
                type:'MARKDOWN',
                atAll: false,
                title: "${env.JOB_NAME}",
                messageUrl: '${env.JOB_URL}',
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 构建编号:${env.BUILD_NUMBER}",
                    "- 构建节点:${env.NODE_NAME}",
                    "- 构建结果:<font color=#F5DEB3 >${currentBuild.result}</font>",
                    "- 持续时间:${currentBuild.durationString}".split('and counting')[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                    "- 日志:${env.BUILD_URL}console",
                    "- 测试报告:${env.BUILD_URL}allure"

                ]
           )
        }
    }

}

---其中robot和执行的脚本需根据自己实际情况修改

jenkins配置钉钉通知实现步骤:

钉钉端:

1.选择自定义机器人

 2.创建机器人设置,其中关键词和加签要与jenkins中关键字和加密一致

 3.点击完成会生产webhook地址,复制到jenkins中钉钉配置项webhook地址中

 jenkins端:

1.jenkins安装钉钉插件(dingtalk)

2.配置钉钉机器人,其中id随便填写,唯一就行(关键字、加密和webhook从钉钉中复制)

 3.测试一下,一切正常钉钉会收到通知

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值