前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试开发进阶(三十)

测试开发进阶(三十)

作者头像
zx钟
发布2019-10-30 14:52:51
7000
发布2019-10-30 14:52:51
举报
文章被收录于专栏:测试游记

生成API文档

  • coreapi
  • Pygments
  • Markdown

安装

代码语言:javascript
复制
$ pip install coreapi
$ pip install Pygments
$ pip install Markdown

使用coreapi

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

指定用于支持coreapi的shcema

代码语言:javascript
复制
REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}

LearnDjango/urls.py添加

代码语言:javascript
复制
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='这是一个接口文档平台'))
]

查看效果

添加注释

  • 单一方法的视图

直接给视图类添加注释

  • 多个方法的视图
代码语言:javascript
复制
class ProjectsListCreateViewSet(ListCreateAPIView):
  """
  get:
  返回所有项目信息

  post:
  新建项目
  """
  • 视图集
代码语言:javascript
复制
class ProjectsViewSet(viewsets.ModelViewSet):
  """
  create:
  创建项目

  retrieve:
  获取项目详情数据

  update:
  完整更新项目

  partial_update:
  部分更新项目

  destroy:
  删除项目

  list:
  获取项目列表数据

  names:
  获取所有项目名称

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

  """

使用drf-yasg

支持swagger

代码语言:javascript
复制
$ pip install drf-yasg

添加到 INSTALLED_APPS

代码语言:javascript
复制
INSTALLED_APPS = [
    ...
    'drf_yasg'
    ...
]

LearnDjango/urls.py添加以下部分

代码语言:javascript
复制
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')
]

访问:

代码语言:javascript
复制
http://127.0.0.1:8000/swagger.json

返回json格式数据

访问

代码语言:javascript
复制
http://127.0.0.1:8000/swagger.yaml

会自动下载一份yaml文件

访问

代码语言:javascript
复制
http://127.0.0.1:8000/swagger/

访问

代码语言:javascript
复制
http://127.0.0.1:8000/redoc/

开始项目

创建项目

添加日志器

ApiTest/settings.py中添加

代码语言:javascript
复制
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子应用
代码语言:javascript
复制
manage.py@ApiTest > startapp user
添加INSTALLED_APPS
代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user.apps.UserConfig',
]
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用coreapi
  • 查看效果
  • 添加注释
  • 使用drf-yasg
  • 开始项目
    • 创建项目
      • 添加日志器
        • 用户模块
          • 创建user子应用
          • 添加INSTALLED_APPS
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档