一、测试计划创建
接口名称: /test_plans/
请求方式: POST
参数格式: JSON
请求参数:
参数 | 变量名 | 类型 | 说明 | 是否必传 |
测试计划名称 |
| 字符串 | 测试步骤id | 是 |
项目id |
| 整数 | 测试场景id | 是 |
测试场景id |
| json | 执行顺序 | 是 |
请求示例:json格式参数
{
"name": "回归测试",
"project": 1,
"scenes": [
1,
2
]
}
返回示例
响应状态码:201
响应数据:
{
"id": 1,
"create_time": "2022-07-19T17:05:01.498082+08:00",
"name": "回归测试",
"project": 1,
"scenes": [
1,
2
]
}
二、删除测试计划
接口名称: /test_plans/id/
请求方式: DELETE
参数格式: 路径参数
请求参数: 无
返回示例
响应状态码:204
响应数据:无
三、修改测试计划
接口名称: /test_plans/id/
请求方式: PUT/PATCH
参数格式: JSON
请求参数:
参数 | 变量名 | 类型 | 说明 | 是否必传 |
测试计划名称 | name | 字符串 | 测试步骤id | 是 |
项目id | project | 整数 | 测试场景id | 是 |
测试场景id | scene | json | 执行顺序 | 是 |
请求示例:
json格式参数
{
"name": "回归测试",
"project": 1,
"scenes": [
1,
2
]
}
返回示例
响应状态码:200
响应数据:
{
"id": 1,
"create_time": "2022-07-19T17:05:01.498082+08:00",
"name": "回归测试",
"project": 1,
"scenes": [
1,
2
]
}
四、查看测试计划列表
接口名称: /test_plans/
请求方式: GET
参数格式: url参数
请求参数:
参数 | 变量名 | 类型 | 说明 | 是否必传 |
项目id | project | 整数 | 项目id | 否 |
返回示例
响应状态码:200
响应数据:
[{
"id": 1,
"create_time": "2022-07-19T17:05:01.498082+08:00",
"name": "回归测试",
"project": 1,
"scenes": [
1,
2
]
}]
五、查看测试计划
接口名称: /test_plans/id/
请求方式: GET
参数格式: 路径参数
请求参数: 无
返回示例
响应状态码:200
响应数据:
{
"id": 1,
"create_time": "2022-07-19T17:05:01.498082+08:00",
"name": "回归测试",
"project": 1,
"scenes": [
1,
2
]
}
六、 后端代码
1. 序列化器
class TestPlanSerializer(ModelSerializer):
class Meta:
model = TestPlan
fields = ' all '
2. 视图
class TestPlanViewSet(ModelViewSet):
"""测试计划视图"""
queryset = TestPlan.objects.all()
serializer_class = TestPlanSerializer
permission_classes = [IsAuthenticated]
filterset_fields = ['project']
@action(methods=['post'], detail=True)
def run(self, request, pk, *args, **kwargs):
# 获取环境id
env_id = request.data.get('env')
# 生成测试记录
serializer = RecordSerializer(data={
'test_env': env_id,
'plan': pk,
'status': '执行中',
'tester': request.user.username
})
# raise_exception这个参数为True,如果校验失败会直接抛出异常
serializer.is_valid(raise_exception=True)
record = serializer.save()
# 同步执行测试计划
run_plan(plan_id=pk,env_id=env_id,record_id=record.id)
return Response(serializer.data)
添加了一个action用来进行排序
3. 路由
route.register('test_plans', views.TestPlanViewSet)