黑马客达天下-接口测试-Postman+Pytest+Allure+Jenkins实现持续集成

目录

项目简介

待测接口

测试流程

设计接口测试用例

合同新增业务

业务路径

解析接口文档

接口测试用例

接口测试-合同

验证码接口

登录接口

验证码和登录接口关联

新增课程接口

合同上传接口

添加合同接口

合同列表接口

单接口测试

登录接口

提取测试点

设计测试用例

进行测试

断言简化测试

课程添加接口

提取测试点

设计测试用例

查询课程列表接口

提取测试点

设计测试用例

课程修改接口

提取测试点

设计测试用例

课程删除接口

提取测试点

设计测试用例

PostMan

批量执行

断言

响应码断言

包含指定字符串断言

JSON数据断言

参数化

自定义变量

JSON

CSV

自动化

搭建环境

基础知识

代码实现验证码接口

代码实现登录接口

接口对象封装

代码实现课程新增接口

代码实现合同上传及合同新增接口

代码实现单接口测试-登录接口-JSON实现

自动化集成Allure

集成Jenkins

搭建Newman自动化测试环境

普通报告和加强版报告

Allure报告

通过Jenkins持续集成

自动构建包含Allure生成报告的任务

配置Allure插件

创建任务

Postman任务运行后,postman_Allure任务随之运行


配套资料链接: 百度网盘 请输入提取码

项目简介

项目名称:客达天下项目类型:销售管理系统(CRM)项目特点:前后端分离、功能通用性强项目链接:客达天下/

待测接口

  • 合同管理业务

    • 登录

    • 添加课程

    • 上传合同

    • 新增合同

  • 课程管理模块

    • 添加课程

    • 修改课程

    • 查询课程

    • 删除课程

测试流程

  1. 接口文档解析

  2. 设计测试用例

  3. 脚本开发

  4. 执行脚本

  5. 缺陷跟踪

  6. 测试报告

设计接口测试用例

  1. 根据流程图、找出业务路径

  2. 根据业务路径分析对应的接口请求

  3. 将业务路径转化为接口测试用例

合同新增业务

合同新增流程图:

业务路径

解析接口文档

对新增合同接口文档进行分析,通过请求中的参数(URL、请求方法、请求头、请求参数类型、请求参数等),设计测试用例

接口测试用例

接口测试-合同

验证码接口

请求路径:

http://kdtx-test.itheima.net/api/captchaImage 

实现步骤:

  1. 设置请求方式和接口地址

  2. 发送请求

  3. 查看响应结果

登录接口

请求路径:

http://kdtx-test.itheima.net/api/login

实现步骤:

  1. 设置请求方式和接口地址

  2. 设置请求头

  3. 设置请求体

  4. 发送请求

  5. 查看响应结果

验证码和登录接口关联

上文可知,登录接口的请求体中包括验证码接口的返回值,使用关联技术可以避免手动赋值

需求:

  1. 验证码接口:/api/captchaImage

  2. 登录接口:/api/login

  3. 登录接口请求体uuid字段->验证码接口返回uuid字段

实现步骤:

  1. 创建Environments并添加变量 (此处设置为uuid)

  2. 创建Collection并设置环境

  3. 添加对应请求 Image、Login (与上文中验证码接口、登录接口一致)

  4. 验证码接口中配置tests

  5. 登录接口中使用变量uuid

  6. 查看响应结果

需要先运验证码接口,在运行登录接口

新增课程接口

请求路径:

http://kdtx-test.itheima.net/api/clues/course

实现步骤:

  1. Environments中设置token

  2. 登录接口中设置tests

  3. 创建对应请求

  4. 发送请求

  5. 查看响应结果

合同上传接口

请求路径:

http://kdtx-test.itheima.net/api/common/upload

实现步骤:

  1. 创建对应请求

  2. 发送请求并查看响应结果

添加合同接口

请求路径:

http://kdtx-test.itheima.net/api/contract
请求样例:
{
    "name":"测试接口21",
    "phone":"12222222222",
    "contractNo":"HT100120234",
    "subject":"6",
    "courseId":99,
    "channel":"0",
    "activityId":77,
    "fileName":"{{fileName}}"
}

实现步骤:

  1. Environments中设置fileName

  2. 合同上传接口设置Tests

  3. 创建添加合同接口并设置对应属性

  4. 发送请求并查看响应结果

合同列表接口

请求路径:

http://kdtx-test.itheima.net/api/contract/list

实现步骤:

  1. 创建对应请求

  2. 发送请求并查看响应结果

单接口测试

登录接口

请求路径:

http://kdtx-test.itheima.net/api/login

需求:

  • 已注册正确的用户名和密码,登录成功

  • 用户名或密码错误,登录失败, 提示"用户名或密码错误"

提取测试点

设计测试用例

进行测试
  1. 关联验证码接口(省略)

  2. 设置不同的请求数据登录成功

    登录失败-用户名为空

    登录失败-未注册用户名

  3. 发送请求并查看返回结果登录成功

    登录失败-用户名为空

    登录失败-未注册用户名

断言简化测试

在登录请求的Tests种添加以下内容:

//断言 状态码为200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
​
//断言数据中包含 "成功"
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("成功");
});
​
//断言json返回数据中的msg值为 "操作成功"
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.eql("操作成功");
});

发送请求并查看响应结果:

课程添加接口

请求路径:

http://kdtx-test.itheima.net/api/clues/course

需求:

  • 必填参数

    • 课程名称 (不超过30个字符)

    • 课程学科 (1位数字,0->java,1->前端,6->测试)

    • 课程价格 (1-5位数字)

    • 使用人群 (1位数字,1->小白,2->中级程序员)

  • 非必填参数

    • 课程介绍 (不超过200个字符)

提取测试点

设计测试用例

查询课程列表接口

请求路径:

http://kdtx-test.itheima.net/api/clues/course/list

需求:

  • 支持课程名称、课程学科、课程价格、适用人群、课程介绍的单条件查询

  • 支持课程名称、课程学科、课程价格、适用人群、课程介绍的组合条件查询

  • 查询存在满足条件课程信息时,返回该课程信息

  • 查询不存在满足条件课程信息时,返回空值

提取测试点

设计测试用例

课程修改接口

请求路径:

http://kdtx-test.itheima.net/api/clues/course

需求:

  • 课程ID (数字、必填)

提取测试点

设计测试用例

课程删除接口

请求路径:

http://kdtx-test.itheima.net/api/clues/course/id

需求:

  • 课程ID (数字、必填)

提取测试点

设计测试用例

PostMan

批量执行

选中需要执行的Collections,点击运行按钮

选择要执行的请求,点击右侧按钮执行

断言

代替人工自动判定预期结果和实际结果是否一致

响应码断言

包含指定字符串断言

JSON数据断言

参数化

自定义变量

在Collections界面下的Variables页面卡中可以自定义变量

之后可以使用 {{变量名}} 来使用

JSON

创建json文件,内容如下:

[
    {"username":"manager","password":123456,"status":200,"message":"成功","msg":"操作成功"},
    {"username":"admin","password":"HM_2023_test","status":200,"message":"成功","msg":"操作成功"}
]

使用批量运行的方式,选择创建的json文件

可点击 Preview 按钮进行预览

修改请求中的Tests (使用data.名称 的形式)

在Body中使用{{变量名}}

批量运行

CSV

创建json文件,内容如下:

username,password,status,message,msg
manager,123456,200,成功,操作成功
admin,HM_2023_test,200,成功,操作成功

其它配置同json

自动化

使用工具或代码代替人工对接口进行测试

接口自动化框架设计思路

搭建环境

  • 编程语言:python

  • 测试框架:pytest

  • 接口请求:requests

安装requests

pip install requests

检查安装:

pip3 show requests

基础知识

Requests:

Response:

代码实现验证码接口

  1. script文件夹下创建 ImageTest.py文件,添加以下内容

    #获取图片验证码
    import requests
    #导包
    import requests
    #发送请求
    response = requests.get(url="http://kdtx-test.itheima.net/api/captchaImage")
    ​
    #查看响应
    print(response.status_code)
    print(response.text)
  2. 运行查看结果

代码实现登录接口

  1. script文件夹下创建 LoginTest.py文件,添加以下内容

    #登录接口
    #导包
    import requests
    #发送请求
    url="http://kdtx-test.itheima.net/api/login"
    headers={
        "Content-Type":"application/json",
    }
    loginData={
        "username":"admin",
        "password":"HM_2023_test",
        "code":"2",
        "uuid":"37cb173d9c9245278ed786ce39ff974e"   #运行ImageTest.py得到其中的uuid
    }
    response = requests.post(url=url,headers=headers,json=loginData)
    ​
    #查看响应
    print(response.status_code)
    print(response.text)
  2. 运行查看结果

接口对象封装

安装Pytest

pip install pytest==7.4.0
​
可能还需要以下配置:
pytest的测试用例文件名需要以test_命名开头
pycharm导航栏鼠标移入file点击Settings,选择Settings-Tools-Python Integrated Tools,Tesing 下拉框 选 pytest 点击OK
  1. 在api文件夹下创建login.py文件,添加以下内容

    import requests
    ​
    # 创建接口类
    class LoginAPI:
        # 初始化
        def __init__(self):
            # 指定url基本信息
            self.url_verify = "http://kdtx-test.itheima.net/api/captchaImage"
            self.url_login = "http://kdtx-test.itheima.net/api/login"
    ​
        # 验证码
        def get_verify_code(self):
            return requests.get(url=self.url_verify)
    ​
        # 登录
        def login(self, test_data):
            return requests.post(url=self.url_login, json=test_data)
  2. 在script目录下创建ContracTest.py文件,添加以下内容:

    # 导包
    from api.login import LoginAPI
    ​
    # 创建测试类
    class TestContract:
        # 初始化
        token = None
    ​
        # 前置处理
        def setup(self):
            # 实例化接口对象
            self.login_api = LoginAPI()
    ​
        # 后置处理
        def teardown(self):
            pass
    ​
        # 1、登录成功
        def test_login_success(self):
            # 获取验证码
            responseImage = self.login_api.get_verify_code()
            print(responseImage.status_code)
            print(responseImage.json())
            # 打印uuid数据
            print(responseImage.json().get("uuid"))
    ​
            # 登录
            login_data = {
                "username": "admin",
                "password": "HM_2023_test",
                "code": "2",
                "uuid": responseImage.json().get("uuid")
            }
            res_l = self.login_api.login(test_data=login_data)
            print(res_l.status_code)
            print(res_l.json())
  3. 运行查看响应结果

代码实现课程新增接口

  1. 在api目录下创建course.py文件,添加以下内容

    import requests
    # 创建接口类
    class CourseAPI:
        # 初始化
        def __init__(self):
            self.url_add_course = "http://kdtx-test.itheima.net/api/clues/course"
            self.url_select_course = "http://kdtx-test.itheima.net/api/clues/course/list"
    ​
        # 课程添加
        def add_course(self, test_data, token):
            return requests.post(url=self.url_add_course, json=test_data, headers={"Authorization": token})
  2. script目录下ContractTest.py文件添加以下内容

    from api.login import LoginAPI
    from api.course import CourseAPI
    # 创建测试类
    class TestContract:
        # 初始化
        token = None
    ​
        # 前置处理
        def setup(self):
            # 实例化接口对象
            self.login_api = LoginAPI()
            self.course_api= CourseAPI()
    ​
        # 后置处理
        def teardown(self):
            pass
    ​
        # 1、登录成功
        def test_login_success(self):
            # 获取验证码
            responseImage = self.login_api.get_verify_code()
            print(responseImage.status_code)
            print(responseImage.json())
            # 打印uuid数据
            print(responseImage.json().get("uuid"))
    ​
            # 登录
            login_data = {
                "username": "admin",
                "password": "HM_2023_test",
                "code": "2",
                "uuid": responseImage.json().get("uuid")
            }
            res_l = self.login_api.login(test_data=login_data)
            print(res_l.status_code)
            print(res_l.json())
            TestContract.token=res_l.json().get("token")  #添加token
            print(TestContract.token)
        # 课程新增 方法
        def test_add_Course(self):
            add_data = {"name": "测试开发提升课01", "subject": "6", "price": 899, "applicablePerson": "2", "info": "测试开发提升课01"}
            response=self.course_api.add_course(test_data=add_data,token=TestContract.token)
            print(response.json())
  3. 运行查看响应结果

代码实现合同上传及合同新增接口

  1. 在config.py文件中添加以下内容

    import os
    ​
    # 设置项目环境域名
    BASE_URL = "http://kdtx-test.itheima.net"
    ​
    # 获取项目根路径
    BASE_PATH = os.path.dirname(__file__)
  2. 在api目录下创建contract.py文件,添加以下内容

    import requests
    import config
    # 创建接口类
    class ContractAPI:
        # 初始化
        def __init__(self):
            self.url_upload = config.BASE_URL + "/api/common/upload"
            self.add_contrat = config.BASE_URL + "/api/contract"
    ​
        # 合同上传接口
        def upload_contract(self, test_data, token):
            return requests.post(url=self.url_upload, files={"file": test_data}, headers={"Authorization":  token})
    ​
        # 合同新增
        def add_contract(self, test_data, token):
            return requests.post(url=self.add_contrat, json=test_data, headers={"Authorization":  token})
  3. 在script目录下的TestContract.py文件中追加下面的内容:

    # 导包
    from api.login import LoginAPI
    from api.course import CourseAPI
    from api.contract import ContractAPI
    import config
    # 创建测试类
    class TestContract:
        # 初始化
        token = None
        fileName=None
        # 前置处理
        def setup(self):
            # 实例化接口对象
            self.login_api = LoginAPI()
            self.course_api= CourseAPI()
            self.contract_api = ContractAPI()
    ​
        # 后置处理
        def teardown(self):
            pass
    ​
        # 1、登录成功
        def test_login_success(self):
            # 获取验证码
            responseImage = self.login_api.get_verify_code()
            print(responseImage.status_code)
            print(responseImage.json())
            # 打印uuid数据
            print(responseImage.json().get("uuid"))
    ​
            # 登录
            login_data = {
                "username": "admin",
                "password": "HM_2023_test",
                "code": "2",
                "uuid": responseImage.json().get("uuid")
            }
            res_l = self.login_api.login(test_data=login_data)
            print(res_l.status_code)
            print(res_l.json())
            TestContract.token=res_l.json().get("token")  #添加token
            print(TestContract.token)
        # 课程新增 方法
        def test_add_Course(self):
            add_data = {"name": "测试开发提升课01", "subject": "6", "price": 899, "applicablePerson": "2", "info": "测试开发提升课01"}
            response=self.course_api.add_course(test_data=add_data,token=TestContract.token)
            print(response.json())
    ​
        # 上传合同成功
        def test_upload_contract(self):
            self.test_login_success()  # 前置条件:登录
            # 读取pdf文件数据
            # f = open("../data/test.pdf", "rb")
            f = open(config.BASE_PATH + "/data/1.txt", "rb")
            response = self.contract_api.upload_contract(test_data=f, token=TestContract.token)
            TestContract.fileName=response.json().get("fileName")
            print(response.json())
    ​
        # 合同新增成功
        def test_add_contract(self):
            self.test_upload_contract()  #前置条件-上传合同
            # contractNo: 数据唯一
            add_data = {"name": "测试888", "phone": "13612345678", "contractNo": "HT20230007", "subject": "6",
                        "courseId": " 99", "channel": "0", "activityId": 77, "fileName": TestContract.fileName}
            response = self.contract_api.add_contract(test_data=add_data, token=TestContract.token)
            print(response.json())
  4. 运行查看响应结果

    上传合同需要在data目录下存放对应的文件

代码实现单接口测试-登录接口-JSON实现

代码:

from api.login import LoginAPI
import pytest
import json
import config
​
​
# # 测试数据
# test_data = [
#     ("admin", "HM_2023_test", 200, '成功', 200),
#     ("", "123456", 200, '错误', 500),
#     ("jack666", "123456", 200, '错误', 500),
# ]
​
# 读取json文件
def build_data(json_file):
    # 定义空列表
    test_data = []
    # 打开json文件
    with open(json_file, "r",encoding='utf-8') as f:
        # 加载json文件数据
        json_data = json.load(f)
        # 循环遍历测试数据
        for case_data in json_data:
            # 转换数据格式[{},{}] ==> [(),()]
            username = case_data.get("username")
            password = case_data.get("password")
            status = case_data.get("status")
            message = case_data.get("message")
            code = case_data.get("code")
            test_data.append((username, password, status, message, code))
    # 返回处理之后测试数据
    return test_data
​
​
# 创建测试类
class TestLoginAPI:
    # 初始化
    uuid = None
​
    # 前置处理
    def setup(self):
        # 实例化接口类
        self.login_api = LoginAPI()
        # 获取验证码
        response = self.login_api.get_verify_code()
        print(response.json())
        # 提取验证码接口返回的uuid参数值
        TestLoginAPI.uuid = response.json().get("uuid")
        print(TestLoginAPI.uuid)
​
    # 后置处理
    def teardown(self):
        pass
​
    # 登录成功
    # @pytest.mark.parametrize("username, password, status, message, code", build_data(json_file="../data/login.json"))
    @pytest.mark.parametrize("username, password, status, message, code", build_data(json_file=config.BASE_PATH + "/data/login.json"))
    def test01_success(self, username, password, status, message, code):
        login_data = {
            "username": username,
            "password": password,
            "code": "2",
            "uuid": TestLoginAPI.uuid
        }
        response = self.login_api.login(test_data=login_data)
        # 断言响应状态码为200
        assert status == response.status_code
        # 断言响应数据包含'成功'
        assert message in response.text
        # 断言响应json数据中code值
        assert code == response.json().get("code")

运行结果:

自动化集成Allure

下载地址:

GitHub:
https://github.com/allure-framework/allure2/releases
镜像源:
https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

解压并添加环境变量(bin目录)

检验安装

allure --version

配置pytest.ini文件,添加以下内容:

[pytest]
addopts=-s --alluredir report
testpaths=./script
python_files=ContractTest.py
python_classes=Test*
python_functions=test*


运行pytest:(终端中)

pytest

然后可以看到report目录下生成了对应日志

生成Allure报告:在对应的路径下运行下面命令

allure serve report

运行之后会弹出网页,可以看到详细的测试报告

出错原因:更新及删除的操作需要指定对应的id,此处并未指定

集成Jenkins

由于postman请求中使用了断言,并且请求中包含接口验证的错误用例,故报告中存在的问题均在预期之内

搭建Newman自动化测试环境

Newman 是一个命令行工具,用于运行 Postman 集合。它允许你在命令行中自动化测试 API,并可以与持续集成和持续部署(CI/CD)流程集成 相关操作

首先要安装node.jscmd中执行下面命令 验证是否正确安装:

node -v


运行下面命令安装newman:

npm install -g newman


之后运行下面命令验证是否正确安装:

newman -v


然后导出我们的测试文件

使用cmd进入到测试文件所在目录,运行以下命令

newman run .\Postman.json --reporters cli


普通报告和加强版报告

#导入报告模块
##普通
npm install -g newman-reporter-html
##加强版
npm install -g newman-reporter-htmlextra

#运行下面命令 生成报告(HTML)
newman run Postman.json -r html,htmlextra --reporter-html-export --reporter-html-export html1.html --reporter-htmlextra-export html2.html


普通版html

加强版html

会发现:此页面样式错误,原因是引用的js文件在国外解决方法:手动修改对应的js文件

https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css
修改为
https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.1/css/bootstrap.min.css


Allure报告

#运行下面命令安装依赖
npm install newman-reporter-allure -g
#运行下面命令生成results
newman run Postman.json --reporters allure --reporter-allure-export allure-results
#运行下面命令查看 报告
allure serve


通过Jenkins持续集成

官网:Jenkins/

安装好之后,cmd进入对应文件夹中运行下面命令

java -jar -Dfile.encoding=UTF-8 jenkins.war


进入之后,我们点击左侧的新建Item创建任务

输入任务名称、选择 Freestyle project

选中Build perodiaclly 设置以下内容:

#每分钟执行一次
* * * * *


Build Steps中选择ExecuteWindowsbatchcommand 来执行我们的cmd命令

call newman run D:\newman\Postman.json --reporters cli
exit 0


之后会发现,每分钟都会构建

查看控制台输出可以发现

自动构建包含Allure生成报告的任务

至此,已经实现了定时构建,下面我们实验以下内容:当newman构建时(模拟开发上传新代码等),自动构建包含Allure生成报告的任务

配置Allure插件

网站:Index of /jenkins/plugins/allure-jenkins-plugin/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror/

下载插件之后,进入下面界面安装

选择刚才下载的文件之后,点击部署

重启Jenkins即可

创建任务

同样的,我们创建新的任务

在构建触发器部分,配置下面的内容

Build Steps部分,我们仍选择windows命令行,输入以下内容

## call md allure-results 可不加
call newman run D:\newman\Postman.json --reporters cli,allure --reporter-allure-export allure-results
exit 0


添加构建后操作

注意这两个路径是有要求的,相对于工作目录。

results目录与上方命令中的目录是一致的,不然会出现报告没有数据的情况

Postman任务运行后,postman_Allure任务随之运行

查看Allure Report报告如下

此处图标为!指测试中有失败样例(与测试用例有关),至此,实现了Jenkins+Allure自动化测试报告的持续集成

<think>好的,用户正在寻找黑马软件测试相关的Jenkins学习资料或文档。首先,我需要确认用户提到的“黑马软件测试”具体指的是哪个机构或课程。根据提供的引用内容,尤其是引用[2]和[3],可以看出黑马程序员有软件测试的课程,涉及Python、UnitTest框架、持续集成等内容。用户可能正在学习他们的课程,现在需要关于Jenkins的部分。 接下来,我应该检查提供的引用中是否有直接提到Jenkins的内容。引用[3]提到了持续集成环境的搭建,单元测试、构建打包、镜像封装、容器部署,以及Git和码云的使用。虽然没直接提到Jenkins,但持续集成通常使用Jenkins,所以可能课程中包含这部分,但名称未被明确引用。 考虑到用户可能需要知道如何获取黑马Jenkins资料,我需要根据现有信息提供建议。比如,查看他们的课程大纲,联系官方支持,或者参考他们提供的Git仓库。引用[3]提到使用Git和码云,可能相关资料在码云仓库中,用户需要安装插件并登录查看。 此外,引用[4]提到性能测试和持续集成流程,可能Jenkins用于构建和部署,因此学习Jenkins需要结合这些内容。用户可能需要学习如何配置Jenkins流水线,集成单元测试和接口测试,生成报告等。 用户可能没有明确说明是否已经查看了课程提供的所有资料,或者是否在特定平台(如码云)上找不到资料。因此,回答中应建议他们检查课程模块,联系服,或访问官方社区论坛。同时,提供通用的Jenkins学习建议,如官方文档和实战书籍,帮助他们补充知识。 最后,确保回答结构清晰,分点列出建议,并引用相关引用内容来支持建议,比如引用[3]提到的持续集成环境搭建和Git使用,引用[2]中的测试框架部分,说明Jenkins如何与之结合。同时,生成相关问题,帮助用户深入探索,比如持续集成的流程或Jenkins与Docker的结合。</think>根据黑马软件测试课程的内容特点,其Jenkins学习资料通常与持续集成自动化测试和DevOps流程紧密结合。以下是分步说明和推荐获取途径: ### 一、课程内嵌学习路径 1. **持续集成模块定位** 在课程阶段5的接口测试部分(引用[4]),Jenkins通常作为**自动化构建/部署工具**出现在持续集成章节。重点学习: - Jenkins与Git的代码拉取配置 - 单元测试报告集成(结合PyTest框架,引用[2]) - 测试环境自动部署(容器化部署,引用[3]) 2. **实验文档查找技巧** 通过课程提供的Git仓库(引用[3])查找`jenkinsfile`或`pipeline`目录,内含: ```bash /scripts ├── deploy_pipeline.Jenkinsfile # 部署流水线示例 └── test_report_config.xml # 测试报告集成配置 ``` ### 二、官方资源获取方式 3. **黑马内部资料申请** 联系课程助教获取《持续集成实战手册》,包含: - Jenkins权限配置与节点管理 - 邮件通知设置(测试失败警报) -Postman/UnitTest的API测试联动(引用[3]) 4. **社区资源挖掘** 访问课程论坛搜索"Jenkins+性能测试",可找到学员分享的: - 性能测试结果可视化配置指南(对接JMeter,引用[4]) - 多分支流水线设计案例 ### 三、延伸学习建议 5. **补充学习材料推荐** 结合《Jenkins权威指南》重点学习: - 声明式流水线语法(与Python测试脚本结合) - 并行测试任务配置 - 分布式构建策略(适用于多设备兼容性测试) 建议通过课程提供的码云仓库(引用[3])中的`devops_example`项目进行实战演练,该项目包含完整的Jenkinsfile配置案例。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值