
# 设置CodeArts TestPlan接口脚本的环境参数
在自动化测试中，通常存在多个测试环境，每个测试环境的环境参数值会有不同，例如域名、账号等。这些参数常会在测试脚本中被使用到，如果将这些参数硬绑定到测试脚本中，脚本的冗余度很高，复用度很低。
为了解决上述问题，可以采用环境参数的方式统一管理和环境相关的参数，在测试脚本中参数化引用环境参数，执行时只需选择执行环境，即可使用对应的环境参数值完成测试。
#### 环境参数使用范围
当前项目的所有测试用例，各个测试用例中的测试步骤的参数、检查点、变量、URL等都可以引用环境参数。
 #### 环境参数引用形式
环境参数的引用形式为"$${参数名}"。例如：参数名为"hostname"，则可以使用"$${hostname}"来引用该参数。
根据需要可以对环境参数进行分组配置管理，例如：参数hostname在类生产环境中的值为"stage.example.com"，在生产环境中的值为"prod.example.com"，测试脚本使用"$${hostname}"引用该参数，执行测试时选择不同环境执行，实现一套接口自动化用例在所有环境复用。
#### 环境参数设置方法
1. 进入接口自动化用例编辑的"脚本"页签，单击图标![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964152497.png)。
   
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032729.png "点击放大")
   
   
   
2. 单击"新建变量"，输入参数信息，单击"确定"。 
   
   | 配置项  | 说明                                                                                                                                                                                                        |
   |:---|:---|
   | 参数名  | 参数的名称。                                                                                                                                                                                                    |
   | 类型   | 参数的类型。支持文本、随机字符串、随机整数、时间戳等多种类型。                                                                                                                                                                           |
   | 值    | 参数的值。                                                                                                                                                                                                     |
   | 描述   | 对参数的描述。                                                                                                                                                                                                   |
   | 敏感参数 | 勾选为敏感数据后，对参数值加密存储，在测试结果日志中使用星号覆盖处理。敏感数据类型适用并不限于个人信息、鉴权信息，例如姓名、地址、用户名等。                                                                                                                                    |
   | 动态参数 | 动态参数设置，动态参数的值可以在用例执行过程中被赋值。动态参数初始值可为空，被赋值之后，此处显示的是最新值。 在用例测试步骤"响应提取"的"赋值给环境动态参数"列中设置后，在测试执行时，响应提取的内容将被赋值给动态参数。详细介绍请参见[动态变量说明]。 |
      
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001936914146.png "点击放大")
   
   
   
3. 页面中会有一个默认环境。 
   如果需要设置其它环境为默认环境，单击该环境卡片右上角图标![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032709.png)，在下拉列表中选择"设为默认环境"。
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032717.png)
   
   
   
 
#### 环境参数值使用内置函数的设置说明
1. 环境参数不支持内置函数嵌套，如果有嵌套则原样输出。
2. 环境参数支持的内置函数如[表1]。
    表1环境参数支持的内置函数表 
   | 序号 | 函数                                    | 描述          |
   |:---|:---|:---|
   | 1  | $random_string(intA)                  | 生成指定长度随机字符串 |
   | 2  | $random_int(intA, intB)               | 生成指定范围随机数   |
   | 3  | $timestamp()                          | 获取当前时间戳     |
   | 4  | $timestamp_format(String A, String B) | 时间戳转日期      |
   | 5  | $uuid()                               | 生成UUID      |
   | 6  | $encode_base64(StringA)               | 生成Base64编码  |
   | 7  | $md5(StringA)                         | 生成MD5哈希值    |
   | 8  | $sha512(StringA)                      | 生成SHA512编码  |
      
   
3. 环境参数支持内置函数使用举例如下。
   - 正常场景：引用$random_string(intA)，输出$random_string(intA)。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964152501.png "点击放大")
     
   
   - 正常场景：函数前后拼接字符，按照字符串解析，原样输出。例如引用aa$random_string(10)或者$random_string(10)aa，则输出aa$random_string(10)或者$random_string(10)aa。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001937073494.png "点击放大")
     
     
     
   
   - 异常场景：传参所需一个参数，实际传两个参数，例如$random_string(1,1) ，执行时抛出异常。 传参类型和实际函数所需参数类型不匹配，例如$random_string(fff)或$random_string() ，执行时抛出异常 。
     ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032721.png "点击放大")
     
     
   
   
   
   
 
#### 同步环境参数
鼠标右键单击需要同步的参数，选择"同步到其他环境"，可以将当前参数同步到全部的环境下。
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001937073474.png "点击放大")
#### 在同环境或跨环境复制环境参数
1. 鼠标右键单击需要复制的参数，单击"复制"。
2. 在当前环境或其他环境的变量列表空白处，鼠标右键单击"粘贴"，可以复制对应的环境参数。
 
 #### 动态变量说明
测试套件中的多个用例间可能存在上下文关系，后执行的用例依赖先执行用例中接口的返回结果。例如所有的接口都需要鉴权信息，且鉴权信息有时效性，如果在每个用例里都去获取鉴权信息，用例的测试步骤会显得冗余，不易维护。
使用动态全局变量即可避免上述问题，在第一个执行的用例中获取鉴权信息后赋值给动态全局变量，后面执行的用例直接使用动态全局变量即可，无需重复获取鉴权信息。
1. 设置动态变量。 
   1. 在"接口自动化测试用例列表"页面，单击页面右侧"更多"，选择"环境参数"。
   
   2. 选中动态变量列的复选框，单击"保存"，将全局参数设置为动态参数。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964152505.png "点击放大")
      
      
   
   
   
   
2. 赋值动态变量。
   
   1. 在接口自动化用例中，选择URL请求的"响应提取"标签下，单击匹配列的"添加"按钮。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032701.png "点击放大")
      
      
      
   
   2. 在"赋值给环境动态参数"下拉列表中希望赋值的全局动态参数。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032725.png "点击放大")
      
      
   
   
   
   
3. 使用动态变量。
   
   - 在测试用例中使用动态变量。 在需要使用全局动态变量的用例中，引用动态全局变量，引用方式请参见[环境参数引用形式]。
     ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964152509.png "点击放大")
     
     
   
   - 在测试套件中使用动态全局变量。 将[2]和[3]中的用例按顺序添加到测试套件中，选择"串行执行"，即可让使用动态变量的用例执行时使用到动态全局变量被赋值的最新值。
     ![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
     并行执行时动态变量的赋值和使用顺序不能保证，因此不推荐在并行执行时使用动态全局变量。
     
   
   
   
   
 
