在项目结构那一节说过,一个服务的基本结构大概是怎么样的,这里再列出来回顾下:
pro_name
├── docs # 项目文档说明
├── src or pro_name/# 项目名称
├── tests # 测试用例
├── README.md # 项目介绍
└──requirements.txt # 该项目依赖的第三方库
一个服务编写完成后,在部署之前,你需要做的一步就是进行单元测试,首先你要确定目前的代码是可以完美运行的,然后测试用例还可以让你在下次修改代码逻辑进行版本迭代的时候,只要再跑一次对应的测试用例就可以快速地确定此次的版本依旧是完美的,大大节省时间,一般集成测试的时候都需要跑测试用例的脚本。
本次使用的例子还是继续在demo06的基础上进行演示,提醒一下诸位,在继续阅读前可以先大致看下目录中 test的代码哈。
测试
单元测试
Sanic进行单元测试的时候,官方推荐使用的是pytest,具体怎么对Sanic构建的服务进行测试呢,别急,Sanic开发团队提供了关于 pytest的插件,见pytest-sanic,使用起来也是非常简单。
让我们结合前面的例子,利用pytest-sanic测试一下demo06中的 rss api服务,先看下目录结构:
tests
├── setting.py
└── test_rss.py
首先在 setting.py中定好请求的数据:
# setting.py
def rss_data():
return {
"name": "howie6879"
}
然后编写对应的测试用例,这里是关于 /v1/post/rss/的一个 POST请求测试,代码如下:
# test_rss.py
async def test_http_rss(test_cli):
data = setting.rss_data()
response = await test_cli.post('/v1/post/rss/', data=ujson.dumps(data))
resp_json = await response.json()
assert resp_json['status'] == 1
# 运行测试 pytest tests/test_rss.py
"""
================================================= test session starts ==================================================
platform darwin -- Python 3.6.0, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /Users/howie/Documents/programming/python/git/Sanic-For-Pythoneer/examples/demo06/sample, inifile:
plugins: celery-4.0.2, sanic-0.1.5
collected 2 items
tests/test_rss.py .s
========================================= 1 passed, 1 skipped in 2.13 seconds ==========================================
"""<

本文详细介绍了如何对Sanic服务进行单元测试和压力测试,包括使用pytest-sanic进行单元测试,通过locust进行压力测试。此外,还讨论了服务的部署方法,如Gunicorn + Supervisor + Caddy和Docker,并提供了相应的配置示例。最后,提到了Docker化部署在现代部署策略中的重要性。
最低0.47元/天 解锁文章
610

被折叠的 条评论
为什么被折叠?



