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. Python:作为主要开发语言,可以使用Python来编写测试脚本和测试用例。 2. Pytest:一款功能强大的Python测试框架,可以用于编写和运行测试用例,并提供丰富的断言和报告功能。 3. Allure:一个开源的测试报告生成工具,可以生成美观且易于理解的测试报告,支持多种语言和框架。 4. Git:版本控制工具,用于管理和同步测试代码。 5. Jenkins:一个持续集成和持续交付工具,可以自动化运行测试用例并生成测试报告。 6. Docker:容器化平台,可以用于创建和管理测试环境,提供一致的运行环境。 下面是搭建接口自动化测试框架的步骤: Step 1: 创建项目结构 在本地创建一个目录作为项目根目录,然后在根目录下创建以下子目录: - `tests`:存放测试脚本和测试用例; - `reports`:存放测试报告; - `config`:存放配置文件; - `utils`:存放一些工具类和函数。 Step 2: 编写测试用例 在`tests`目录下编写测试脚本和测试用例。可以使用Pytest来组织和执行测试用例,使用断言来验证测试结果。 Step 3: 配置Allure报告 在`config`目录下创建一个`pytest.ini`文件,配置Allure报告的相关参数,例如报告保存路径、报告标题等。 Step 4: 运行测试用例 使用Pytest运行测试用例,并生成Allure报告。可以使用命令行或者集成到Jenkins进行自动化执行。 Step 5: 集成Git和Jenkins 将项目代码托管到Git仓库,并在Jenkins配置相关任务,使其在代码提交后自动触发测试用例的运行和报告的生成。 Step 6: 创建Docker镜像(可选) 使用Docker将测试环境打包成镜像,方便部署和维护。 一些可能出现的问题和解决方法: 1. 安装依赖:在搭建过程,可能会遇到安装依赖包的问题。可以使用pip来安装所需的Python包,并注意版本兼容性。 2. 配置问题:在配置AllureJenkins时,可能会遇到配置不正确或缺少必要参数的问题。可以参考官方文档或者搜索解决方案来解决这些问题。 3. 报告生成失败:如果生成Allure报告失败,可以检查相关依赖是否安装正确,以及路径和权限是否设置正确。 4. 测试环境问题:如果测试用例在不同环境运行时出现问题,可以考虑使用Docker来创建一致的测试环境,或者在测试用例添加环境适配代码。 相关问题: 1. 除了Allure,还有哪些常用的测试报告生成工具? 2. 如何在Pytest使用断言来验证测试结果? 3. 如何在Jenkins配置任务来触发自动化测试? 4. 除了接口自动化测试,还有哪些类型的自动化测试可以使用Python实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值