django-10-测试用例

一、测试用例接口管理

POST 创建测试步骤

POST /test_steps/

Body 请求参数

{
  "title": "登录成功",
  "headers": {},
  "request": {},
  "file": [],
  "setup_script": "# 前置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "teardown_script": "# 后置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# response:响应对象response \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "interface": 1
}

请求参数

名称

位置

类型

必选

说明

body

body

object

none

» title

body

string

none

» headers

body

object

none

» request

body

object

none

» file

body

[string]

none

» setup_script

body

string

none

» teardown_script

body

string

none

» interface

body

integer

none

返回示例

成功

{
  "id": 1,
  "title": "登录成功",
  "headers": {},
  "request": {},
  "file": [],
  "setup_script": "# 前置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "teardown_script": "# 后置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# response:响应对象response \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "interface": 1
}

返回结果

状态码

状态码含义

说明

数据模型

201

Created

成功

Inline

返回数据结构

GET 查看测试步骤列表

GET /test_steps/

请求参数

名称

位置

类型

必选

说明

scene

query

integer

none

interface

query

integer

none

返回示例

成功

[
  {
    "id": 1,
    "title": "登录成功",
    "headers": {},
    "request": {},
    "file": [],
    "setup_script": "# 前置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
    "teardown_script": "# 后置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# response:响应对象response \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
    "interface": 1
  }
]

返回结果

状态码

状态码含义

说明

数据模型

200

OK

成功

Inline

返回数据结构

DELETE 删除测试用例

DELETE /test_steps/{id}/

请求参数

名称

位置

类型

必选

说明

id

path

string

none

返回示例

204 Response

{}

返回结果

状态码

状态码含义

说明

数据模型

204

No Content

删除成功

Inline

返回数据结构

PUT 修改测试步骤

PUT /test_steps/{id}/

Body 请求参数

{
  "title": "登录成功",
  "headers": {},
  "request": {},
  "file": [],
  "setup_script": "# 前置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "teardown_script": "# 后置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# response:响应对象response \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "interface": 1
}

请求参数

名称

位置

类型

必选

说明

id

path

string

none

body

body

object

none

» title

body

string

none

» headers

body

object

none

» request

body

object

none

» file

body

[string]

none

» setup_script

body

string

none

» teardown_script

body

string

none

» interface

body

integer

none

返回示例

删除成功

{
  "id": 1,
  "title": "登录成功",
  "headers": {},
  "request": {},
  "file": [],
  "setup_script": "# 前置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "teardown_script": "# 后置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# response:响应对象response \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "interface": 1
}

返回结果

状态码

状态码含义

说明

数据模型

204

No Content

删除成功

Inline

返回数据结构

GET 查看测试步骤

GET /test_steps/{id}/

请求参数

名称

位置

类型

必选

说明

id

path

string

none

返回示例

成功

{
  "id": 1,
  "interface": {
    "id": 1,
    "steps": [
      {
        "id": 1,
        "title": "登录成功"
      }
    ],
    "name": "登录",
    "url": "/users/login/",
    "method": "POST",
    "type": "1",
    "project": 1
  },
  "title": "登录成功",
  "headers": {},
  "request": {},
  "file": [],
  "setup_script": "# 前置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n",
  "teardown_script": "# 后置脚本(python):\n# global_tools:全局工具函数\n# data:用例数据 \n# response:响应对象response \n# env: 局部环境\n# ENV: 全局环境\n# db: 数据库操作对象\n"
}

返回结果

状态码

状态码含义

说明

数据模型

200

OK

成功

Inline

二、后端代码

2.1 模型

from django.db import models

# Create your models here.


setup_script = """# 前置脚本(python):
# global_tools:全局工具函数
# data:用例数据 
# env: 局部环境
# ENV: 全局环境
# db: 数据库操作对象
"""
teardown_script = """# 后置脚本(python):
# global_tools:全局工具函数
# data:用例数据 
# response:响应对象response 
# env: 局部环境
# ENV: 全局环境
# db: 数据库操作对象
"""


class TestStep(models.Model):
    """用例表"""

    title = models.CharField(max_length=50, help_text='用例名称', verbose_name='用例名')
    interface = models.ForeignKey('projects.Interface', on_delete=models.CASCADE, help_text='接口',
                                  verbose_name='接口verbose_name',
                                  )
    headers = models.JSONField(help_text='请求头', verbose_name='请求头', default=dict, blank=True)
    request = models.JSONField(help_text='请求信息', verbose_name='请求信息', default=dict, blank=True)
    file = models.JSONField(help_text='上传的文件参数', verbose_name='上传的文件', default=list, blank=True)
    setup_script = models.TextField(help_text='前置脚本', verbose_name='前置脚本', default=setup_script, blank=True)
    teardown_script = models.TextField(help_text='后置脚本', verbose_name='用例后置脚本', default=teardown_script,
                                       blank=True)

    def __str__(self):
        return self.title

    class Meta:
        db_table = 'tb_test_step'
        verbose_name = "测试步骤表"
        verbose_name_plural = verbose_name

2.2 序列化器

1693907748954-cad5b365-3805-4570-93b7-0388e93b1d11.png

from rest_framework.serializers import ModelSerializer

from projects.serializers import InterfaceSerializer, NestTestStepSerializer

from . import models
from .models import TestStep


class TestStepSerializer(ModelSerializer):
    class Meta:
        model = models.TestStep
        fields = '__all__'


class TestStepRetrieveSerializer(ModelSerializer):
    # 这是做了一个嵌套,且属性名应该是模型类名的小写,如:interface
    interface = InterfaceSerializer(read_only=True)

    class Meta:
        model = TestStep
        fields = '__all__'

2.3 视图

from django.shortcuts import render

from rest_framework.viewsets import ModelViewSet

from . import serializers
from . import models


# Create your views here.


class TestStepViewSet(ModelViewSet):
    queryset = models.TestStep.objects.all()
    serializer_class = serializers.TestStepSerializer
	# 当一个视图集中,不同的请求方法需要使用不同的序列化器时,那么需要改写get_serializer_class方法
    def get_serializer_class(self):
        if self.action == 'retrieve':
            return serializers.TestStepRetrieveSerializer
        return super().get_serializer_class()

注意:

后端中self.action对应http方法:

self.action

http

list

get

create

post

update、partial_update

put、patch

delete

delete

retrieve

get

2.4 路由

from rest_framework.routers import DefaultRouter

from .views import TestStepViewSet
route = DefaultRouter()
route.register('test_steps', TestStepViewSet)

urlpatterns = route.urls
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值