测试开发进阶(三十)

测试开发进阶(三十)

欢迎关注我的公众号「测试游记」

生成API文档

  • coreapi
  • Pygments
  • Markdown

安装

1
2
3
$ pip install coreapi
$ pip install Pygments
$ pip install Markdown

使用coreapi

  • DRF框架(>3.10)需要添加

指定用于支持coreapi的shcema

1
2
3
REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}

LearnDjango/urls.py添加

1
2
3
4
5
6
7
8
9
10
11
from django.contrib import admin
from django.urls import path, include, re_path
from rest_framework.documentation import include_docs_urls

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('interfaces.urls')),
path('', include('projects.urls')),
path('docs/', include_docs_urls(title='测试平台接口文档',
description='这是一个接口文档平台'))
]

查看效果

接口文档效果

添加注释

  • 单一方法的视图

直接给视图类添加注释

  • 多个方法的视图
1
2
3
4
5
6
7
8
class ProjectsListCreateViewSet(ListCreateAPIView):
"""
get:
返回所有项目信息

post:
新建项目
"""
  • 视图集
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class ProjectsViewSet(viewsets.ModelViewSet):
"""
create:
创建项目

retrieve:
获取项目详情数据

update:
完整更新项目

partial_update:
部分更新项目

destroy:
删除项目

list:
获取项目列表数据

names:
获取所有项目名称

interfaces:
获取指定项目的所有接口数据

"""

注释效果

使用drf-yasg

支持swagger

1
$ pip install drf-yasg

添加到INSTALLED_APPS

1
2
3
4
5
INSTALLED_APPS = [
...
'drf_yasg'
...
]

LearnDjango/urls.py添加以下部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from django.contrib import admin
from django.urls import path, include, re_path
from rest_framework.documentation import include_docs_urls
from drf_yasg.views import get_schema_view
from drf_yasg import openapi

schema_view = get_schema_view(
openapi.Info(
title='API接口文档',
default_version='v1',
description='这是一个接口文档平台',
# terms_of_service='http://api.xxx.com',
contact=openapi.Contact(email='490336534@qq.com'),
license=openapi.License(name='BSD License')
),
public=True
)

urlpatterns = [
re_path(r'^swagger(?P<format>\.json|\.yaml)$',
schema_view.without_ui(cache_timeout=0), name='schema-json'),
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger'),
path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc')
]

访问:

1
http://127.0.0.1:8000/swagger.json

返回json格式数据

返回json数据

访问

1
http://127.0.0.1:8000/swagger.yaml

会自动下载一份yaml文件

yaml文件

访问

1
http://127.0.0.1:8000/swagger/

swagger接口文档

访问

1
http://127.0.0.1:8000/redoc/

redoc文档

开始项目

创建项目

创建项目

添加日志器

ApiTest/settings.py中添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
LOGGING = {
'version': 1,
'disable_exising_loggers': False,
'formatters': {
'verbose': {
'format': '%(asctime)s - [%(levelname)s] - [msg]%(message)s'
},
'simple': {
'format': '%(asctime)s - [%(levelname)s] - %(name)s - [msg]%(message)s - [%(filename)s:%(lineno)d ]'
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs/mytest.log'), # 日志文件的位置
'maxBytes': 100 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': {
'mytest': { # 定义了一个名为mytest的日志器
'handlers': ['console', 'file'],
'propagate': True,
'level': 'DEBUG' # 日志器接收的最低日志级别
}
}
}

用户模块

创建user子应用

1
manage.py@ApiTest > startapp user

添加INSTALLED_APPS

1
2
3
4
5
6
7
8
9
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user.apps.UserConfig',
]
 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
您的支持将鼓励我继续创作!