# 添加并设置CodeArts TestPlan接口脚本的URL请求
1. 完成[创建CodeArts TestPlan接口自动化测试用例模板](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0010.html)操作后，在"测试用例 \> 接口自动化"页面单击需要编辑的用例名称。
2. 选择"脚本"页签，单击"URL请求"，生成一个测试步骤。
   
   用户可以导入被测接口的Swagger描述文件生成脚本模板，基于脚本模板编排测试用例，详细操作请参考[将测试步骤保存为CodeArts TestPlan接口脚本关键字](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0012.html)。
   选择脚本模板，拖拽脚本模板卡片、或单击脚本模板卡片上的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940830882.png)，将脚本添加至测试步骤。
   
   
3. 根据需要编辑URL请求，包括[添加并设置CodeArts TestPlan接口脚本的URL请求](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0013.html)、[设置CodeArts TestPlan接口脚本的检查点](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0014.html)、[设置CodeArts TestPlan接口脚本的响应提取](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0015.html)，可以在"请求"输入需要测试的环境地址，可以是域名或ip ，当用户从本地导入swagger或postman，"请求"这里的地址会自动生成。
4. （可选）重复[2]\~[3]，添加前置步骤与后置步骤。
5. 编辑完毕，单击页面右上角"保存"，完成测试脚本的编写。
![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
- 接口自动化用例支持在请求URL路径、请求头、请求体、检查点参数、URL响应中使用内置函数。内置函数详情请参考[接口自动化用例内置函数说明](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0057.html)。
- 接口自动化用例支持在编辑时，可以在测试步骤标题区域使用右键，对测试步骤进行剪切、复制、粘贴、删除等操作；存在多个测试步骤时，支持通过"Ctrl+左键"多选后，批量执行右键操作；其中，"复制"或"剪切"测试步骤后，支持当前页签/跨页签/跨用例"粘贴"测试步骤
- 需要注意的是，在标题区域内的右键响应，均为对测试步骤的操作。因此在编辑测试步骤标题区域文本框时，浏览器右键被系统右键覆盖，浏览器右键不生效。如需在测试步骤标题区域的文本框中对文本进行复制粘贴操作，请使用快捷键的方式进行复制（Ctrl+C）和 粘贴（Ctrl+V）操作。
 
#### 请求URL与URL参数
在接口自动化用例的"脚本"页签中填写需要请求的URL、支持HTTP/HTTPS请求。
接口自动化可以支持以下类型URL请求方式。其中，新建的URL的请求方式默认为GET方式。
| 请求方式   | 说明              |
|:---|:---|
| GET  | 从API检索数据。     |
| POST    | 上传文件或图片和添加新数据。 |
| PUT  | 替换现有数据。         |
| DELETE | 删除现有数据。         |
| HEAD   | 获取响应的HTTP头。    |
| OPTIONS  | 预检请求。           |
| PATCH   | 更新一些现有数据的字段。   |
   
在请求URL中支持使用环境参数、局部参数以及响应提取参数，使用方法请参考[设置CodeArts TestPlan接口脚本的测试用例参数](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0016.html)。
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002769529899.png "点击放大")
#### 在URL请求中设置请求头
接口自动化预置HTTP协议的常用请求头，在请求头模块，输入要填写的请求头信息。
1. 在接口自动化测试用例脚本中，完成[添加URL请求]。
2. 单击URL请求名称。
3. 可以为当前URL请求的测试步骤下设置请求头。 
   请求头支持表单、文本两种格式。页面中默认使用表单形式，通过![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002506098815.png "点击放大")图标进行表单和文本的切换。
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002506218763.png "点击放大")
   
   - 表单：在请求头"名称"列选择或输入请求头名称，在"值"列选择/输入内容。
   
   - 文本：需要按照"key:value"的格式填写请求头。 与表单模式不同的是，文本模式仅支持对"请求头名称"和"值"进行配置操作，但不支持对"描述"进行配置操作。
     填写请求头时需要关注以下两点约束条件：
     1. 请求头的总数不能超过30。
     
     2. 请求头的长度不能超过10000。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002506218765.png "点击放大")
        
        
      
   
   
   
   
测试计划服务中预置了多个常用的HTTP请求头，详情如下表：
 表1请求头类型 
| 请求头名称                           | 说明                                                                                                                                                                                                                                      |
|:---|:---|
| Accept                           | 能接受的回应内容类型（Content-Types），如：text/plain等。                                                                                                                                                                                                  |
| Accept-Charset                  | 能接受的字符集，如：utf-8等。                                                                                                                                                                                                                       |
| Accept-Encoding                  | 能接受的编码方式列表：compress \| gzip \| identity。                                                                                                                                                                                                  |
| Accept-Language                  | 能接受的回应内容的自然语言列表，如：en-US等。                                                                                                                                                                                                                  |
| Accept-Datetime                | 能接受的按照时间来表示的版本。                                                                                                                                                                                                                            |
| Access-Control-Request-Method   | 用于预检请求让服务器知道哪些HTTP方法的实际请求时将被使用。                                                                                                                                                                                                         |
| Access-Control-Request-Headers | 用于预检请求让服务器知道哪些HTTP头的实际请求时将被使用。                                                                                                                                                                                                            |
| Authorization                     | 用于超文本传输协议认证的认证信息。                                                                                                                                                                                                                          |
| Cache-Control                    | 用来指定在请求/响应链中的所有缓存机制都必须遵守的指令。                                                                                                                                                                                                              |
| Connection                       | 浏览器优先使用的连接类型。                                                                                                                                                                                                                               |
| Cookie                          | 由服务器通过Set- Cookie发送的一个超文本传输协议Cookie。                                                                                                                                                                                                     |
| Content-Length                 | 以八位字节数组（8位的字节）表示的请求体的长度。                                                                                                                                                                                                                  |
| Content-MD5                     | 请求体内容的二进制MD5散列值，以Base64编码的结果。                                                                                                                                                                                                             |
| Content-Type                  | 请求体的多媒体类型（用于POST和PUT请求中），如：application/json。                                                                                                                                                                                               |
| Date                             | 发送消息的日期和时间。                                                                                                                                                                                                                               |
| Expect                          | 表明客户端要求服务器做出特定的行为。                                                                                                                                                                                                                          |
| Forwarded                       | 包含来自被改变或丢失时代理参与请求的路径代理服务器的面向客户端的信息。 用于调试，统计和生成依赖于位置的内容，并且通过设计它可以显示隐私敏感信息，例如客户端的IP地址。因此，在部署此标头时必须牢记用户的隐私。                                                                                               |
| From                            | 发起请求的用户的邮件地址。                                                                                                                                                                                                                            |
| Host                             | 服务器的域名（用于虚拟主机），以及服务器所监听的传输控制协议端口号。如果所请求的端口是对应的服务的标准端口，则端口号可省略。 自超文件传输协议版本1.1（HTTP/1.1）开始是必需字段，在服务中如果URL中填写的域名为IP地址会自动添加该字段，否则请将被测应用的IP与端口信息填写在该字段。                                                      |
| If-Match                        | 仅当客户端提供的实体与服务器上对应的实体相匹配时，才进行对应的操作。主要用作像PUT这样的方法中，仅在用户从上次更新某个资源以来，该资源未被修改的情况下，才更新该资源。                                                                                                                                                      |
| If-Modified-Since                | 允许在对应的内容未被修改的情况下返回304未修改（ 304 Not Modified ）。                                                                                                                                                                                             |
| If-None-Match                 | 允许在对应的内容未被修改的情况下返回304未修改（ 304 Not Modified ），参考超文本传输协议的实体标记。 典型用法中，URL被请求时，Web服务器会返回资源和其相应的ETag值，且会被放置在HTTP的ETag字段中，然后，客户端可以决定是否缓存该资源和相应的ETag。以后，如果客户端想再次请求相同的URL，将会发送一个包含已保存的ETag和If-None-Match字段的请求。 |
| If-Range                        | 如果实体未被修改过，则向发送方发送其所缺少的那一部分或多个部分，否则，发送整个新的实体。                                                                                                                                                                                             |
| If-Unmodified-Since            | 仅当实体自某个特定时间以来未被修改的情况下，才发送回应。                                                                                                                                                                                                             |
| Max-Forwards                    | 限制消息可被代理及网关转发的次数。                                                                                                                                                                                                                           |
| Origin                           | 发起一个针对跨来源资源共享的请求。要求服务器在回应中加入一个"访问控制-允许来源"（Access-Control-Allow-Origin）字段。                                                                                                                                                                |
| Pragma                         | 与具体的实现相关，这些字段可能在请求/回应链中的任何时候产生多种效果。                                                                                                                                                                                                       |
| Proxy-Authorization            | 用来向代理进行认证的认证信息。                                                                                                                                                                                                                            |
| Range                         | 仅请求某个实体的一部分，字节偏移从0开始。                                                                                                                                                                                                                     |
| Referer                        | 表示浏览器访问的前一个页面上的某个链接将浏览器带到了当前所请求的这个页面。                                                                                                                                                                                                      |
| TE                              | 浏览器预期接受的传输编码方式：可使用回应协议头Transfer-Encoding字段中的值；还可用"trailers"（与"分块"传输方式相关）值来表明浏览器希望在最后一个尺寸为0的块之后还接收到一些额外的字段。                                                                                                                                 |
| User-Agent                     | 浏览器的浏览器身份标识字符串。                                                                                                                                                                                                                            |
| Upgrade                        | 要求服务器升级到另一个协议。                                                                                                                                                                                                                             |
| Via                           | 向服务器告知请求是由哪些代理发出的。                                                                                                                                                                                                                         |
| Warning                        | 一个一般性的警告，告知在实体内容体中可能存在错误。                                                                                                                                                                                                                 |
   
#### 在接口自动化测试用例脚本中设置通用请求头
用户可以将请求头值配置成脚本的通用继承模式，后续所有测试步骤无需重复设置，可直接调用复用，大幅减少重复设置操作，提高测试活动效率。
1. 进入接口自动化用例编辑的"脚本"页签。
2. 单击页面下方"请求头"。
3. 在脚本的测试页面下会单独生成一个请求头步骤。
4. 单击请求头中的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002506102709.png)图标，可以为该请求头控件添加自定义描述（最大长度为100个字符）。
5. 单击请求头控件，可以设置请求头的值（可以设置为正常值、局部参数、环境参数、内置函数），请求头的各个类型可参考[表1]（最多添加30个值，值的限制长度为10000）。
6. 将通用请求头拖拽至任意测试步骤的上方后，该通用请求头下方的测试步骤都会继承它的值。
![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
- 如果将通用请求头设置成第一个测试步骤，针对当前请求头步骤之后的所有请求全部生效。
- 如果通用请求头的名称与某个URL请求里的请求头名称一致，优先调用URL请求的值。
- 通用请求头支持被添加到组合关键字，具体操作请参考[将测试步骤保存为CodeArts TestPlan组合脚本关键字](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0181.html)。
 
#### 请求体
请求体是接口请求需要传递的消息（报文），支持文本、JSON请求体、表单参数三种格式。
当请求消息方式选择POST、PUT、DELETE、OPTIONS、PATCH、HEAD时，页面中会出现请求体；请求消息方式为GET时不显示请求体。
- 文本：可以输入标准json串，与选择JSON类型请求体使用方式一致。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964152321.png "点击放大")
  
  
- 表单参数：支持文本和文件两种类型（最大添加表单类型请求头个数为100）。
  - 文本类型：设置参数名和值。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001936913946.png "点击放大")
    
    
  
  - 文件类型：设置参数名，并通过上传文件为参数赋值，文件类型不限。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032525.png "点击放大")
    
    
   
 
