测试平台实战03

一、ORM设计

1)关联关系
一对多:ForeignKey
多对多:ManyToManyFiled
在这里插入图片描述

一对一:OneToOneFiled
在这里插入图片描述
2)mysql数据库(版本5.7)配置
创建数据库:

CREATE DATABASE `autotpsite` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

3)安装依赖库:

pip install mysqlclient

4)字段条件关联查询:

field_lookuptype=value
默认查找类型为exact精确匹配

常用字段条件关联查询
exact、contains、in

跨关系查询(关联查询)
字段__关联字段

sql null 和json null区别
req.data = Value('null')
req.data = None

在这里插入图片描述

二、djangorestframework框架

1)定义:帮助开发restful风格的增删改查接口。
在这里插入图片描述

2)安装:

pip install djangorestframework

3)序列化器
序列化(查询)
数据对象-----python数据类型-----json

反序列化(增删改)
数据流-----python数据类型-----数据对象
在这里插入图片描述
序列化器中的类属性字段
在这里插入图片描述

4)drf请求与响应

请求对象
request.POST 只适用于post方法
request.data  处理任意数据,适用于post、put、patch方法

响应对象
return Response(data)  渲染成客户端请求的内容类型

示例:
在这里插入图片描述在这里插入图片描述

5)函数视图装饰器:api_view

视图类
ListCreateAPIView
RetrieveUpdateDestroyAPIView

视图集(使用路由生成器)
ModelViewSet
DefaultRouter()

format_suffix_patterns 重写url

6)自定义渲染器
定义:按照指定的格式返回响应数据。
在这里插入图片描述
settings.py配置:

REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES':(
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPlRenderer'
    )
}

在这里插入图片描述

7)异常信息处理
在这里插入图片描述

'EXCEPTION_HANDLER': 'utils.exception.my_exception_handler'

error_response = exception_handler(exc, context)

8)在线API生成器 swagger
安装:

pip install drf-yasg  # drf-yasg 支持最新Django

注册:

INSTALLED_APPS = ['django.contrib.staticfiles', 'drf_yasg']

配置路由:

from drf_yasg.views import get_schema_view
from drf_yasg import openapi

schema_view = get_schema_view(
    openapi.Info(
        title='SQTP API DOC',
        default_version='v1',
        description='SQTP接口文档',
        terms_of_service='https://www.365.net',
        contact=openapi.Contact(email='1612@qq.com', url='http://cbblog.cn'),
        license=openapi.License(name='BSD License')
    ),
    public=True,
    permission_classes=(permissions.AllowAny, )
)

urlpatterns = [
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='redoc-ui')
]

9)配置前端文件访问路径

from django.conf.urls.static import static

urlpatterns = [
path('admin/,admin.site.urls),
path('api",include(urls))
] + static("/", document root="dist")

10)嵌套字段和choice字段展示

config = ConfigSerializer()  # config字段就对应其序列化器返回的内容

req1=Request.objects.get(id=1)
req1.get_method_display()

11)项目流程
注册流程
在这里插入图片描述
登录流程
在这里插入图片描述
用例执行主流程
在这里插入图片描述

1)用户管理设计

"""
1、模型的继承--公共模型
抽象类
abstract = True

2、自定义用户模型--引用User模型
settings.AUTH_USER_MODEL

添加多个外键字段时,需要加反向查询名称related_name
模型抽象类的字段被多个模型继承时,反向查询related_name会提示重复,需要添加%(class)s_,类名作为前缀
"""

"""
认证、权限
user=auth.authenticate(**info)  # 根据用户名和密码验证用户信息,成功则返回对应的用户对象
auth.login(request,user)  # 记录登录用户信息到后台 django自带方法
auth.logout(request)  # 清除用户登录信息
@login_required  # django验证用户是否登录的机制

drf认证模块

drf权限机制
需求:只有当前项目的管理员才有编辑当前项目的权限
"""

在这里插入图片描述

2)用例执行流程设计

"""
传参报字段类型错误,注意检查传参类型是否是对象、字典、字符串(Incorrect type. Expected pk value, received Project)

序列化器中的类属性字段(图片)
1、定义的字段必须出现在fields列表
2、只需要反序列化输入:write_only=True、只需要序列化输出:read_only=True、当前字段允许不传:required=False

反序列化校验机制
if req_serializer.is_valid(raise_exception=True):
    req_obj = req_serializer.save()
"""

反序列化校验机制
在这里插入图片描述

步骤序列化代码
用例序列化代码

"""
1、联合索引(sorted_no和belong_case)

2、用户和数据关联(views模块)
# 同步创建用户
def perform_create(self, serializer):
    serializer.save(create_by=self.request.user)
    
# 同步更新用户
def perform_update(self, serializer):
    serializer.save(update_by=self.request.user)

3、字段展示、屏蔽
在序列化器定义的字段,必须写在fields里
"""

用例文件生成
自定义入参校验器
用例文件输出过滤
单用例执行

"""
1、视图集自定义方法action

2、自定义入参校验器
过滤生成json文件中,字典和列表类型中的空值

3、hr3执行API
hrun testcase/xxx.json
httprunner.cli.main_run([case_path])
"""

测试计划(批量运行测试用例,生成测试报告)
测试计划组件更新

pip install allure-pytest
hrun testcase\测开1_case001.json --alluredir=report/tmp
allure generate report/tmp -o report/html --clean

优化
测试报告集成
上传用例
分页

# REST文件上传功能
from rest_framework.parsers import FileUploadParser
class FileUploadView(APIView):
    parser_classes = [FileUploadParser, ]

分页全局配置
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,

在这里插入图片描述

总结:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍婧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值