Sanic教程: 7.测试与部署

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

在项目结构那一节说过,一个服务的基本结构大概是怎么样的,这里再列出来回顾下:

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 ==========================================	
"""<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值