# 测试计划

注意： 通过第三方接口创建、修改测试计划只支持[自定义测试](minium) 任务，其他类型请在云测页面进行配置。

### 新增普通测试计划
增加测试计划只支持`Minium`任务

### 请求URL

-  `https://minitest.weixin.qq.com/thirdapi/case_plan`

### 请求方式

-  POST

### 参数

| 参数名              | 必选  | 类型     | 说明                                                                                  |
|:-----------------|:----|:-------|--------------------------------------------------------------------------------------------------------------------|
| token            | 是   | string | 可以从页面右上角头像右侧下拉菜单中的 “我的Token” 获取                                                                                    |
| group_en_id      | 是   | string | 项目英文ID，可在 项目管理/产品管理 页面获取                                                                                           |
| test_plan_name   | 是   | string | 测试计划名称                                                                                                             |
| test_plan_config | 是   | string | 参照 [查看编写说明](https://minitest.weixin.qq.com/#/minium/Python/framework/suite)，注意这个字段需要Json序列化成String传入(使用json.dumps) |

### 参考代码

```python
import json
import requests

test_plan_config ={
  'pkg_list': [
    {
      'case_list': ['test_*'], 
      'pkg': '__test_Home',
    }
  ]
}  # 可根据自己的minium用例适配修改

data = {
  'token': 'xxx',
  'group_en_id': 'xxx',
  'test_plan_name': 'api自定义Minium',     # 测试计划名称
  'test_plan_config': json.dumps(test_plan_config)
}

resp = requests.post(url='https://minitest.weixin.qq.com/thirdapi/case_plan', json=data)
```

### 返回示例

```
{
	"data": {
		"test_plan_id": xx,
	},
	"msg": "添加测试计划成功",
	"rtn": 0,
	"timestamp": 1614861228.1035924
}
```

### 新增AI自定义测试计划

### 请求URL

-  `https://minitest.weixin.qq.com/thirdapi/ai_case_plan`

### 请求方式

-  POST

### 参数

| 参数名            | 必选 | 类型     | 说明                          |
|:---------------|:---|:-------|------------------------------------------------------------|
| token          | 是  | string | 可以从页面右上角头像右侧下拉菜单中的 “我的Token” 获取                            |
| group_en_id    | 是  | string | 项目英文ID，可在 项目管理/产品管理 页面获取                                   |
| test_plan_name | 是  | string | 测试计划名称                                                     |
| case_ids       | 是  | string | AI用例ID，需要用json.dumps转成字符串，例如 `json.dumps([1])`             |
| priority       | 否  | string | 优先级，只能在'P0', 'P1', 'P2', 'P3', 'P4', 'P5', 'Others'选择，默认P0 |

### 参考代码

```python
import requests
import json

data = {
  'token': 'xxx',
  'group_en_id': 'xxx',
  'test_plan_name': 'ai_plan_api',     # 测试计划名称
  'case_ids': json.dumps([1,2,3])  # 替换成你自己的AI用例ID
}

resp = requests.post(url='https://minitest.weixin.qq.com/thirdapi/ai_case_plan', data=data)
```

### 返回示例

```
{
	"data": {
		"test_plan_id": xx,
	},
	"msg": "添加成功",
	"rtn": 0,
	"timestamp": 1614861228.1035924
}
```

### 查询测试计划
查询测试计划，只支持`Monkey`、`Minium`或`录制回放`

注意：AI测试计划属于`Minium`任务类型

### 请求URL

- `https://minitest.weixin.qq.com/thirdapi/case_plan_list`

### 请求方式

-  GET

### 参数

| 参数名             | 必选 | 类型     | 说明   |
|:----------------|:---|:-------|-------------------------------------|
| token           | 是  | string | 可以从页面右上角头像右侧下拉菜单中的 “我的Token” 获取     |
| group_en_id     | 是  | string | 项目英文ID，可在 项目管理/产品管理 页面获取            |
| test_type       | 是  | int    | 测试类型，`1`: Monkey`2`：Minium `3`：录制回放 |
| page_index      | 否  | int    | 第 n 页，从1开始，默认-1，表示不分页               |
| page_size       | 否  | int    | 每页返回数量，默认为-1，表示不分页                  |
| keyword_in_name | 否  | string | 筛选条件，测试计划名称包含的字符                    |

### 返回示例

```
{
	"data": [
		{"case_detail": {}, "case_num": 2, "config": {}, "id": 0, "name": "", "test_type_info": "Minium"}
	],
	"msg": "OK",
	"rtn": 0,
	"timestamp": 1614937564.4042642
}
```

### 修改普通测试计划

只支持修改`Minium`测试计划，且修改测试计划时只支持修改name、config

### 请求URL

-  `https://minitest.weixin.qq.com/thirdapi/case_plan`

### 请求方式

-  PUT

### 参数

| 参数名            | 必选 | 类型     | 说明                                                                                     |
|:---------------|:---|:-------|-----------------------------------------------------------------------------------------------------------------------|
| token          | 是  | string | 可以从页面右上角头像右侧下拉菜单中的 “我的Token” 获取                                                                                       |
| group_en_id    | 是  | string | 项目英文ID，可在 项目管理/产品管理 页面获取                                                                                              |
| test_plan_id   | 是  | int    | 测试计划id，可通过查询测试计划api获取或测试计划页面id列获取                                                                                     |
| test_plan_name | 是  | string | 测试计划名称                                                                                                                |
| description    | 是  | string | 参照 [查看编写说明](https://minitest.weixin.qq.com/#/minium/Python/framework/suite) ，注意这个字段需要Json序列化成String传入(使用json.dumps()) |

### 返回示例

```
{
	"msg": "修改测试计划成功",
	"rtn": 0,
	"timestamp": 1614861228.1035924
}
```

### 修改AI自定义测试计划

本接口只能修改AI自定义测试的测试计划

### 请求URL

-  `https://minitest.weixin.qq.com/thirdapi/ai_case_plan`

### 请求方式

-  PUT

### 参数

| 参数名            | 必选 | 类型     | 说明                     |
|:---------------|:---|:-------|-------------------------------------------------------|
| token          | 是  | string | 可以从页面右上角头像右侧下拉菜单中的 “我的Token” 获取                       |
| group_en_id    | 是  | string | 项目英文ID，可在 项目管理/产品管理 页面获取                              |
| test_plan_id   | 否  | int    | 测试计划id，可通过查询测试计划api获取或测试计划页面id列获取                     |
| test_plan_name | 否  | string | 测试计划名称                                                |
| priority       | 否  | string | 优先级，只能在'P0', 'P1', 'P2', 'P3', 'P4', 'P5', 'Others'选择 |
| case_ids       | 否  | string | AI用例ID，需要用json.dumps转成字符串，例如 `json.dumps([1])`        |

### 参考代码

```python
import requests
import json
data = {
  'token': 'xxx',
  'group_en_id': 'xxx',
  'test_plan_id': 111,  # 填要修改的测试计划ID 
  'test_plan_name': 'ai_plan_api_modify',     # 测试计划名称
  "case_ids": json.dumps([1,2]),  # 填要修改的ID
}

resp = requests.put(url='https://minitest.weixin.qq.com/thirdapi/ai_case_plan', data=data)
```

### 返回示例

```
{
	"msg": "修改测试计划成功",
	"data": {
		"test_plan_id": 111,
	},
	"rtn": 0,
	"timestamp": 1614861228.1035924
}
```

### 删除测试计划

删除测试计划

### 请求URL

-  `https://minitest.weixin.qq.com/thirdapi/case_plan/delete`

### 请求方式

-  POST

### 参数

| 参数名              | 必选  | 类型     | 说明                                                                                     |
|:-----------------|:----|:-------|-----------------------------------------------------------------------------------------------------------------------|
| token            | 是   | string | 可以从页面右上角头像右侧下拉菜单中的 “我的Token” 获取                                                                                       |
| group_en_id      | 是   | string | 项目英文ID，可在 项目管理/产品管理 页面获取                                                                                              |
| test_plan_id     | 是   | int    | 测试计划id，可通过查询测试计划api获取或测试计划页面id列获取                                                                                     |

### 返回值

请关注返回值中`rtn`返回值是否为 **0**，当且仅当删除成功时返回 **0**，否则请关注`msg`字段内容。
