单元测试:版本质量评估
单元测试 - 测试用例基类层次
一个简单的测试用例
哪些逻辑需要测试?
Django 自带的代码(框架中实现的)逻辑不需要测试 自己写的代码需要测试,比如自定义的页面的访问,自定义的功能菜单
测试用例目录组织
Django 使用 unittest 模块的内置测试查找机制, 它将在当前工作目录下, 查找任何匹配模式test*.py 命名的文件作为 Test Case。
执行测试用例
# 运行项目下面所有 test
$python manage.py test
# 测试指定模块
$python manage.py test jobs.testcase
# 测试单个模块中的文件
$python manage.py test jobs.testcase.test_views
# 指定类
$python manage.py test jobs.testcase.test_views.JobTests
# 测试指定方法
$python manage.py test jobs.testcase.test_views.JobTests.test_detail
生产环境 Django 配置
静态资源文件的托管环境
- 静态内容 Web 服务器: Apache/Nginx
- CDN 服务器
collectstatic 工具:用来收集静态资源文件, settings 中的相关设置
python3 manage.py collectstatic --settings=settings.local
收集完成后,可以将这些静态文件,上传到托管文件的服务器/CDN
- STATIC_URL: 能够访问到静态文件的 URL 路径。
- STATIC_ROOT: collectstatic 工具用来保存收集到的项目引用到的任何静态文件的路径 •
- STATICFILES_DIRS: 这列出了 Django 的 collectstatic 工具应该搜索静态文件的其他目
同步应用
uWSGI
C 实现的 Python Web 容器;
Web 服务器 Apache/Nginx 与 django-uwsgi 进程通信 来提供动态的内容;
gunicorn
纯 Python 实现的高性能 Python 应用容器,无外部依赖,简单容易配置;
还没有遇 到性能问题的时候,推荐使用 gunicorn
异步应用
Daphne: twisted 实现
Hypercorn: 基于 sans-io hyper, h11, h2, wsproto实现
Uvicorn: 基于 uvloop and httptools 实现
Django 的异步支持 Roadmap
- Django 3.0
-
- ASGI Server
-
- Django 3.1
-
- Async Views
-
- Django 3.2/4.0
-
- Async ORM
-
协程在处理IO时 会释放掉资源 等IO处理完成时 再连接会主任务
gunicorn使用
wangdalei 是我们的项目名称 也是主应用
172.31.7.188 是本机IP
python3 -m pip install gunicorn
export DJANGO_SETTINGS_MODULE=settings.develop
gunicorn -w 3 -b 172.31.7.188:8000 wangdalei.wsgi:application
uvcorn 使用
python3 -m pip install uvicorn
export DJANGO_SETTINGS_MODULE=settings.develop
uvicorn wangdalei.asgi:application --workers 3