文章目录
- 一、Postman 简介
- 二、Postman 功能概览
- 三、Postman 安装说明
- 1. 下载与安装
- 2. 界面导航说明
- 3. 发送第一个请求
- 四、Postman 基础功能
- 1. 常见类型的接口请求
- 查询参数的接口请求
- 表单类型的接口请求
- 上传文件的表单请求
- JSON 类型的接口请求
- 2. 接口响应数据解析
- 3. 接口管理(Collection)
- 4. 批量执行接口请求
- 5. 日志调试
- 6. 断言
- 常用断言
- 断言示例
- 7. 变量(全局/集合/环境)
- 8. 请求前置脚本
- 9. 接口关联
- 10. 常见返回值获取
- 1. 使用响应体查看器(Response Body Viewer)
- 2. Postman 环境变量
- 3. 使用 `pm.response.json()` 方法
- 4. 使用 `console.log()` 打印值
- 5. 使用断言(Assertions)
- 6. 使用响应解析函数
- 7. 利用响应解析路径(Response Parsing Path)
- 8. 使用第三方库
- 示例代码
- 案例1: 多层json嵌套, 获取user_id的值
- 案例2:json中存在列表, 获取points 中的第二 个元素
- 案例3 :列表中取最后一个元素
- 五、Postman 高级功能
- 参数化
- 测试报告
- 代码请求
- 接口文档
- Mock 服务
- 监控
- 六、使用工作空间
- 团队协作
- 工作空间使用
- 七、代码同步与分支管理
- 代码同步
- 分支管理
一、Postman 简介
- Postman 支持 HTTP 协议的接口调试与测试。
- 功能强大,使用简单,易用性好。
- 适合开发人员接口调试和测试人员接口测试。
- postman是一款支持http协议的接口调试与测试工具, 其主要特点就是功能强大, 使用简单且易用性好 。 无论是开发人员进行接口调试, 还是测试人员做接口测试, postman都是我们的首选工具之一 。
那么接下来就介绍下postman到底有哪些功能, 它们分别都能干些什么 。下面先通过一张图来直观的来看下postman中所包含的功能 。
二、Postman 功能概览
- 基础功能:接口请求、响应数据解析、接口管理、批量执行接口请求、日志调试、断言、变量、请求前置脚本、接口关联、常见的返回值获取。
- 便捷功能:快速填写查询参数、请求头信息、批量断言、查询和替换、如何继承集合认证、快速实现添加一个请求。
- 高级功能:读取文件参数化、生成测试报告、代码中发送请求、编写接口文档、Mock 服务、监控、使用工作空间、代码同步与分支管理、连接数据库、apis。
三、Postman 安装说明
1. 下载与安装
-
1.访问 Postman 官方网站下载最新版本。
-
2.根据电脑系统选择相应版本下载。
-
3.双击安装包, 进入到安装界面, 直到用户登录和注册界面。
若个人使用, 选择跳过即可, 这时会进入到postman主界面, 至此postman安装成功(下图)。 若团队使用, 可以进行注册, 注册后使用账号可以加入团队工作区。
2. 界面导航说明
- 界面元素介绍。
3. 发送第一个请求
- 1.打开 Postman,点击 + 号新建请求。
- 2.输入请求 URL,选择请求方法。
- 3.点击 Send 按钮查看响应数据。
四、Postman 基础功能
1. 常见类型的接口请求
常见的接口有如下四种类型, 分别是含有查询参数的接口, 表单类型的接口,json类型的接口以及含有上传文件的接口, 以下就对这四种类型接口及如何在postman中请求进行说明 。
查询参数是由有键值对组成, 格式为: key1=value1&key2=value2, 如果有多组键值对, 要用&隔开 。
在postman中实现对这类接口请求非常简单, 一般就需要明确俩个参数即可, 一个是请求方法, 一个请求地址。
针对上面的那个接口, 地址已经给出 , 而它的请求方法是get 。那么在postman中只需要把这俩个参数填写上即可请求 。
查询参数的接口请求
- 打开postman, 新建一个请求。
- 在请求方法中选择请求方法: GET,因为在postman中默认的请求方法就是GET,所以这一步可以忽略
- 接口URL中输入地址, 点击Send按钮就可以发送请求了 。
- 说明 :查询参数的URL一般直接拷贝到输入的URL地址栏中就可以了, 当然也可以把查询参数在Params中输入, 俩者的效果是一样的 。
表单类型的接口请求
- 我们都知道, 在发送HTTP请求的时候, 一个请求中一般包含三个部分, 分别是请求行, 请求头, 请求体 。
不同的接口, 请求体的数据类型是不一样的, 比较常见的一种就是表单类型, 那么什么是表单类型呢? 简单理解就是在请求头中查看 Content-Type, 它的值如果是:application/x-www-form-urlencoded .那么就说明客户端提交的数据是以表单形式提交的 。见下图:
-
- 如果在postman请求上图的接口, 我们只需要填写四个参数, 分别是(可以参考上图):
- 请求方法: POST
- 请求头: Content-Type: application/x-www-form-urlencode
- 请求体: username= 13088888888&password= 123456&verify_code=8888
- 1.打开postman, 新建一个请求 。
- 2.在请求中设置以上四个参数, 点击Send按钮。在postman中设置请求体类型为, 需要选择body-> x-www-form-urlencoded
- 查看响应数据。
上传文件的表单请求
在做接口测试时, 我们经常会遇到需要上传文件的接口, 比如微信的更新头像。这就需要用到: multipart/form-data。它也属于一种表 单, 但它既支持表单请求, 也支持文件上传。它的请求报文中数据往往是下面这样的。
这种类型的接口, 在postman中该如何请求呢 ?我们先分析需要填写的参数 。
请求方法: POST
请求类型: multipart/form-data
请求体 :file=a1.jpg
实现步骤:
- 1.打开postman, 新建一个请求 。
- 2.在请求中设置以上四个参数, 点击Send按钮。注意 :在postman中设置请求体类型, 需要选择body-> form-data 。file中要选择 File类型, 然后上传本地的文件 。
- 3.查看响应数据。
JSON 类型的接口请求
这应该是接口测试中最常见的一种情况了 , 也就是请求体类型为json,我们来看下这个请求报文 。
根据以上报文, 我们可以分析出, 我们在postman只需要填写四个参数即可, 具体如下:
请求方法: POST
请求体类型:json
请求体数据: {“account”:“root”,“password”:" 123456"}
实现步骤:
- 1.打开postman, 新建一个请求 。
- 2.在请求中设置以上四个参数, 点击Send按钮。注意 :在postman中设置请求体类型, 需要选择body-> raw -JSON
- 3.查看响应数据。
2. 接口响应数据解析
-
响应数据的组成:状态行、响应头、响应体。我们来看下postman的响应 数据展⽰。
-
Postman 的响应数据显示。
状态行: Status: 200 OK
响应头: Headers + Cookies, 需要注意的是Cookies是包含在响应头中的, 但是为了明显, 工具会分开显⽰ 响应体: Body
那么这些数据对我们做接口测试有什么作用呢?
Body和Status是我们做接口测试的重点, 一般来说我们都会验证响应体中的数据和响应状态码 Test Results 是我们编写断言后, 可以查看断言的执行结果 , 所以这个对我们也很有用 。
Time 和Size 是我们做性能测试时, 可以根据这两个参数来对所测接口的性能做一个简单的判断。 接下来我们再来关注下Body中的几个显⽰主题, 分别是: Pretty, Raw, Preview
Pretty:翻译成中文就是漂亮 , 也就是说返回的Body数据在这个标签中查看 , 都是经过格式化的, 格式化后的数据看起来更加直观, 所以 postman默认展⽰的也是这个选项。 比如返回html页面, 它会经过格式化成HTML格式后展⽰, 比如返回json, 那么也会格式化成json格 式展⽰ 。
Raw:翻译成中文未经过加工的, 也就是原始数据 , 原始数据一般都是本文格式的, 未经过格式化处理的, 一般在抓包工具中都有这个选 项 。
Preview:翻译成中文就是预览, 这个选项一般对返回HTML的页面效果特别明显, 如请求百度后返回结果, 点击这个选项后就直接能查看 到的页面 , 如下图 。同时这个选项和浏览器抓包中的Preview也是一样的 。
3. 接口管理(Collection)
- 当我们对一个或多个系统中的很多用例进行维护时, 首先想到的就是对用例进行分类管理, 同时还希望对这批用例做回归测试 。在 postman也提供了这样一个功能, 就是Collection 。通过这个Collection就可以满足我们的上面说的需求。
- Collection 的使用场景。
- 用例分类管理, 方便后期维护
- 可以进行批量用例回归测试 。
- 如何管理用例。先想象我们要测试一个系统, 系统下有多个模块, 每个模块下有很多的被测接口用例 。那么基于 这个场景, 我们来通过Collection来进行实现:
-
- 点击Collection, 点击+New Collection, 在弹出的输入框中输入Collection名称(这个就可以理解为所测试的系统)
-
- 选中新建的Collection右键, 点击Add Folder , 在弹出对话框中输入文件夹名称(这个就可以理解为系统中的模块)
-
- 选中新建的Folder, 点击Add Request , 在弹出的对话框中输入请求名称, 这个就是我们所测试的接口, 也可以理解为测试用例 。
-
最终效果:
通过上面的操作, 我们实现了一个最简单的demo模型。但实际上, 有了这个功能才是postman学习的开始, 因为很多功能都是基础 这个功能的基础上进行的, 比如用例的批量执行, Mock , 接口文档等功能 。
-
4. 批量执行接口请求
- 使用 Collection Runner 批量执行。当我们在一个Collection中编写了很多的接口测试用例, 想一起执行这批用例, 在postman中是如何操作呢 ?
实现步骤:
-
选中一个Collection, 点击右三角, 在弹出的界面点击RUN
-
这会弹出一个叫Collection Runner的界面, 默认会把Collection中的所有用例选中 。
-
点击界面下方的RUN Collection, 就会对Collection中选中的所有测试用例运行 。
对上面的几个红框内的功能进行简单说明:
断言统计 :左上角的两个0是统计当前Collection中断言成功的执行数和失败的执行数, 如果没有编写断言默认都为0 。
Run Summary: 运行结果总览, 点击它可以看到每个请求中具体的测试断言详细信息 。Export Result: 导出运行结果, 默认导出的 结果json文件 。
Retry: 重新运行, 点击它会把该Collection重新运行一遍 New:返回到Runner, 可以重新选择用例的组合 。
总体来说, 这个功能主要是用于对一个Collection中的所有用例或部分用例进行批量运行, 已达到手工回归测试的目的。
5. 日志调试
- 使用 Pre-request Script 或 Tests 打印日志。
- 在做接口测试时, 经常会因为代码写的有问题导致报错, 这时通过查看日志就显得非常重要了, postman也提供了这样的功能, 它允许我 们在脚本中编写打印语句, 查看打印的结果 ; 同时也可以查看每个请求的日志信息 。
在postman中编写日志打印语句使用的是JavaScript, 编写的位置可以是Pre-request Script 或Tests标签中。编写打印语句如: console.log(“我是一条日志”)
那么打印的日如何看呢 ?在postman中有俩个入口, 第一个入口就是 :view-show postman console 。 第二 个入口就是左下角第三个图标 。
打开的日志界面:
这里面有几个比较实用的功能:
1.搜索日志 :输入URL或者打印的日志就能直接搜索出我们想要的请求和日志, 这对我们在众多日志中查找某一条日志是非常方便的 。 按级别搜索: 可以查询log,info,warning,error级别的日志 , 有助于我们更快定位到错误 。
2.查看原始报文(Show raw log): 如果习惯看原始请求报文的话, 这个功能可能更方便些 。
3.隐藏请求(Hide network) :把请求都隐藏掉, 只查看输出日志 。
总之, 通过这个功能, 我们在请求接口报错时, 通过打印响应的日志, 就能很轻松的找到问题原因了 。
6. 断言
- 如果没有断言, 我们只能做接口的功能测试, 但有了断言后, 就为我们做自动化提供了条件, 并且在postman中的断言是非常方便和强大的 。
断言的特点:
断言编写位置 :Tests标签
断言所用语言 :JavaScript
断言执行顺序 :在响应体数据返回后执行
断言执行结果查看 :Test Results
在上面我们介绍到, 编写的断言代码是JavaScript,那如果不会写怎么办 ?不用担心, 因为postman已经给我们内置了一些常用的断言 。 用的时候, 只需从右侧点击其中一个断言, 就会在文本框中自动生成对应断言代码块 。
常用断言
按响应的组成来划分, 分别是状态行, 响应头, 响应体。
1.状态行中又包括状态码, 状态消息 。在postman也可以对这两个进行断言
断言状态码: Status code: code is 200
断言状态消息: Status code:code name has string
2.响应头中的断言
断言响应头中包含: Response headers:Content-Type header check
3.断言响应体(重点)
断言响应体中包含XXX字符串: Response body:Contains string
断言响应体等于XXX字符串: Response body : is equal to a string
断言响应体(json)中某个键名对应的值: Response body : JSON value check
4.响应时间(一般用于性能测试)
断言响应时间: Response time is less than 200ms
断言示例
针对以下接口返回的数据进行断言:
断言响应状态码为200
断言city等于济南
断言update_time包含2020-04-17
整体来说, 如果用postman做接口测试, 这个断言功能必不可少, 其中我们常断言的响应体包含和JSON这俩个断言又是重重之重。
7. 变量(全局/集合/环境)
- 变量的作用域和使用场景。
- 变量可以使我们在请求或脚本中存储和重复使用其值, 通过将值保存在变量中, 可以在集合, 环境或请求中引用。 对我们做接口测试来说, 又是一个非常重要的功能 。
在postman常用的三种变量分别是全局变量, 环境变量, 集合变量 。
全局变量: 一旦申明了全局变量, 全局有效, 也就是说postman中的任何集合, 任何请求中都可以使用这个变量。它的作用域是最大 的 。
环境变量: 要申明环境变量, 首先的创建环境, 然后在环境中才能创建变量 。如果要想使用环境变量, 必须先选择(导入)这个环境, 这 样就可以使用这个环境下的变量了 。需要说明的是环境也可以创建多个 。每个环境下又可以有多个变量 。
集合变量 :集合变量是针对集合的, 也就是说申明的变量必须基于某个集合, 它的使用范围也只是针对这个集合有效 。
- 其中, 他们的作用域范围依次从大到小 :全局变量>集合变量>环境变量 。当在几个不同的范围内都申明了相同的变量时, 则会优先使用范围最小的变量使。
想要使用变量中的值只需俩个步骤, 分别是定义变量和获取变量 。- 定义变量(设置变量)
- 获取变量(访问变量)
- 定义变量:定义全局变量和环境变量, 点击右上角的小齿轮, 弹出如下界面, 就可以根据需求定义全局变量或者环境变量了。
- 已经定义的全局变量和环境变量, 可以进行快速查看:
- 定义集合变量:选择一个集合, 打开查看更多动作(…)菜单, 然后点击编辑 。选择“变量”选项卡以编辑或添加到集合变量。
定义变量除了以上方式, 还有另外一种方式 。但是这种方式在不同的位置定义, 编写不一样。 在URL, Params , Authorization , Headers , Body中定义:
- 手工方式创建一个空的变量名
- 在以上的位置把想要的值选中右击, 选中Set :环境|全局 , 选中一个变量名, 点击后就会保存到这个变量中
在Tests, Pre-requests Script:- 定义全局变量: pm.collectionVariables.set(“变量名”,变量值)
- 定义环境变量: pm.environment.set(“变量名”, 变量值)
- 定义集合变量: pm.variables.set(“变量名”,变量值)
获取变量
- 定义好变量, 接下来就可以使用变量了 。需要注意的是, 在不同的位置获取变量, 编写的规则也是不一样的 。
- 如果在请求参数中获取变量, 无论是获取全局变量, 还是环境变量, 还是集合变量, 获取的方式都是一样的编写规则: {{变量名}} 。
- 请求参数指的是: URL, Params , Authorization , Headers , Body
如果是在编写代码的位置(Tests,Pre-requests Script)获取变量, 获取不同类型的变量, 编写的代码都不相同, 具体如下:- 获取环境变量: pm.environment.get(‘变量名’)
- 获取全局变量: pm.globals.get(‘变量名’)
- 获取集合变量: pm.pm.collectionVariables.get.get(‘变量名’)
变量的使用场景非常广泛, 比如我们后面要提到的接口关联, 请求前置脚本都会使用到变量 。
8. 请求前置脚本
-
前置脚本的执行顺序和使用场景。
-
前置脚本其实就是在Pre-requests Script中编写的JavaScript脚本, 想要了解这个功能, 需要先了解它的执行顺序。那么下面就来看下它 的执行顺序 。
可以看出, 一个请求在发送之前, 会先去执行Pre Request Script(前置脚本) 中的代码 。那么这个功能在实际工作中有什么作用呢 ? -
主要场景: 一般情况下, 在发送请求前需要对接口的数据做进一步处理, 就都可以使用这个功能, 比如说, 登录接口的密码, 在发送前需要 做加密处理, 那么就可以在前置脚本中做加密处理, 再比如说, 有的接口的输入参数有一些随机数, 每请求一次接口参数值都会发送变化 , 就可以在前置脚本中编写生成随机数的代码 。
-
总体来说, 就是在请求接口之前对我们的请求数据进行进一步加工处理的都可以使用前置脚本这个功能。 接下来通过一个案例来看下该功能是如何使用 ?
-
案例:
请求的登录接口URL, 参数t的值要求的规则是每次请求都必须是一个随机数。
-
实现步骤:
- 在前置脚本中编写生成随机数
- 将这个值保存成环境变量
- 将参数t的值替换成环境变量的值 。
这个前置脚本对我们做接口测试也非常有用, 对一些复杂的场景, 都可以使用前置脚本进行处理后再请求接口 。
9. 接口关联
- 在我们测试的接口中, 经常出现这种情况 。上一个接口的返回数据是下一个接口的输入参数 , 那么这俩个接口就产生了关联。这种关联在 做接口测试时非常常见, 那么在postman中, 如何实现这种关联关系呢 ?
- 实现思路:
- 提取上一个接口的返回数据值,
- 将这个数据值保存到环境变量或全局变量中
- 在下一个接口获取环境变量或全局变量
- 案例:
用户上传头像功能, 需要用户先上传一张图片, 然后会自动预览 。那么在这个过程中, 会调用到俩个接口 , 第一个上传头像接口, 第 二 个预览图像接口 。
其中调用上传头像接口成功后会返回如下信息:
- 实现步骤:
- 获取上传头像接口返回url的值
- 将这个值保存成全局变量(环境变量也可以)
- 在图像预览中使用全局变量
可以看出, 接口的关联的解决方案都是用的是变量中的知识, 也就是说只要你明确了要提取的值, 后面就是保存该值, 然后在其他接口使用 该值就可以了。
10. 常见返回值获取
- 从复杂 JSON 结构中提取值的方法。
Postman 提供了多种方法来从复杂的 JSON 结构中提取值。以下是一些常用的方法:
1. 使用响应体查看器(Response Body Viewer)
- 在 Postman 中发送请求后,响应体通常会在请求详情的 “Body” 标签下显示。
- 响应体查看器提供了一个格式化的 JSON 视图,允许你直接点击并选择 JSON 对象或数组中的任意值。
2. Postman 环境变量
- 你可以使用 Postman 内置的
pm.environment
对象来设置和获取环境变量。 - 通过在请求的 “Tests” 选项卡中使用 JavaScript 代码,可以提取 JSON 响应中的值并将其保存到环境变量。
3. 使用 pm.response.json()
方法
- Postman 的
pm.response.json()
方法可以将响应体解析为 JSON 对象。 - 你可以使用这个方法来访问 JSON 对象的属性,例如:
pm.response.json().someProperty
。
4. 使用 console.log()
打印值
- 在 “Pre-request Script” 或 “Tests” 选项卡中使用
console.log()
打印 JSON 中的值。 - 这可以帮助你调试和查看 JSON 结构中的特定值。
5. 使用断言(Assertions)
- 在 Postman 中,你可以添加断言来检查响应数据的特定部分。
- 断言可以访问 JSON 响应的路径,并检查预期的值是否存在或是否符合特定条件。
6. 使用响应解析函数
- Postman 的响应解析函数如
json
、xml
、html
等,可以帮助解析不同类型的响应体。 - 这些函数可以与
pm.environment.set()
或pm.environment.get()
结合使用,以提取和使用 JSON 数据。
7. 利用响应解析路径(Response Parsing Path)
- Postman 允许你设置一个响应解析路径,以便自动提取 JSON 中的特定值。
- 在 “Tests” 选项卡中,你可以使用
postman.setEnvironmentVariable('variableName', postman.getResponseHeader('responseParsingPath'));
来设置环境变量。
8. 使用第三方库
- 对于更复杂的 JSON 结构,你可以考虑使用第三方 JavaScript 库,如
lodash
,来帮助解析和操作 JSON 数据。
示例代码
以下是一些示例代码,展示了如何在 Postman 的 “Tests” 选项卡中提取 JSON 响应中的值:
// 假设响应体是一个 JSON 对象,包含一个名为 'data' 的属性
var response = pm.response.json();
var value = response.data.someValue; // 根据实际的 JSON 结构路径访问
// 将提取的值保存到环境变量
pm.environment.set("extractedValue", value);
// 或者直接打印到 Postman 控制台
console.log("Extracted Value: ", value);
案例1: 多层json嵌套, 获取user_id的值
案例2:json中存在列表, 获取points 中的第二 个元素
案例3 :列表中取最后一个元素
五、Postman 高级功能
参数化
- 使用 Postman 的参数化功能来创建可重用的数据集合,以减少重复工作。
- 参数可以是动态的,也可以是静态的,用于替换请求中的变量部分。
- 在 Postman 中,你可以在集合的 “Variables” 选项卡中定义参数:
// 定义参数
const data = {
"userId": "{{$uuid}}"
};
然后在请求中使用这些参数:
GET /api/users/{{userId}} HTTP/1.1
Host: example.com
测试报告
- 通过 Postman 的测试报告功能,可以生成详细的测试结果报告。
- 报告可以展示测试通过率、失败的测试用例等关键信息。
- 在 “Tests” 选项卡中编写脚本来生成测试报告:
// 测试脚本示例
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
代码请求
- Postman 允许在代码中发送请求,支持多种编程语言。
- 可以利用 Postman API 与编程语言集成,实现自动化测试。
- 使用 Postman API 在 Node.js 中发送请求:
const { request } = require('postman-request');
request('GET', 'https://api.example.com/data', { json: true }, (error, response) => {
if (error) {
console.error('Error:', error);
} else {
console.log('Status code:', response.statusCode);
console.log('Body:', response.body);
}
});
接口文档
- Postman 提供接口文档生成功能,自动从请求和响应中提取信息。
- 文档可以被导出和分享,方便团队成员理解接口细节。
- Postman 可以自动从你的请求生成文档,也可以使用以下命令导出文档:
// 在 Postman UI 中,点击 "Export" 按钮
// 选择格式,例如 HTML, PDF, Markdown 等
Mock 服务
- 使用 Postman 的 Mock 服务来模拟后端接口,进行前端开发或测试。
- Mock 服务支持定义响应状态码、响应体和延迟时间。
- 在 Postman 中设置 Mock 服务响应:
// Mock 响应示例
{
"delay": 0,
"status": 200,
"response": {
"message": "Mock response"
}
}
监控
- Postman 的监控功能可以持续运行集合,监控接口状态。
- 可以设置监控频率,实时获取接口性能和可用性信息。
- 设置监控作业的示例代码:
// 在 Postman UI 中,选择 "Monitors" 选项卡
// 点击 "Add Monitor" 并配置监控作业
六、使用工作空间
团队协作
- Postman 工作空间支持团队协作,共享集合、环境和监视器。
- 团队成员可以共同编辑和使用 Postman 资源。
工作空间使用
- 创建和管理多个工作空间,以区分不同项目或团队。
- 工作空间中的变更可以被版本控制,跟踪历史记录。
- 在 Postman 中创建工作空间:
// 在 Postman UI 中,点击 "Workspaces" 选项卡
// 点击 "Create a new workspace" 并命名你的工作空间
七、代码同步与分支管理
代码同步
- Postman 的代码同步功能允许用户将本地更改同步到云端。
- 支持与 GitHub、Bitbucket 和 GitLab 集成,实现代码同步。
- 配置 Postman 与 GitHub 的同步:
// 在 Postman UI 中,点击 "Settings" > "Sync" 并连接你的 GitHub 账户
// 选择要同步的集合和分支
分支管理
- 在 Postman 中,可以对集合进行分支管理,支持 Git 工作流。
- 可以创建、合并和管理分支,进行更灵活的版本控制。
- 在 Postman 中创建新的分支:
// 在 Postman UI 中,选择 "History" 选项卡
// 点击 "New Branch" 并命名你的新分支