当前位置: 首页 > news >正文

深圳专业制作网站技术杭州公司注册地址租赁一般多少钱

深圳专业制作网站技术,杭州公司注册地址租赁一般多少钱,网站开发环境ide,wordpress 地区联动其实代码没有问题,但是我们忽略了一个问题,就是在正常的开发中,肯定是遇到过这样的情况,我们频繁的有客户端链接,断开连接,需要统一的管理这些链接,那么应该如何管理呢。其实可以声明一个类去管…

其实代码没有问题,但是我们忽略了一个问题,就是在正常的开发中,肯定是遇到过这样的情况,我们频繁的有客户端链接,断开连接,需要统一的管理这些链接,那么应该如何管理呢。其实可以声明一个类去管理这些链接。接下来我们看下该如何优化。

一、优化测试接口方法

1.定义链接管理类,处理所有链接

"""
websocket 链接管理
"""from typing import List, Dictfrom starlette.websockets import WebSocketclass ConnectionManager:def __init__(self):"""存放链接"""self.active_connections: List[Dict[str, WebSocket]] = []async def connect(self, user: str, ws: WebSocket):"""链接"""self.active_connections.append({"user": user, "ws": ws})async def disconnect(self, user: str, ws: WebSocket):"""断开链接,移除"""self.active_connections.remove({"user": user, "ws": ws})

2.修改应用代码

我们增加了链接,移除链接的操作,那么对应修改下代码

from connection_tool import ConnectionManager
from starlette.websockets import WebSocketDisconnect
ws_manager = ConnectionManager()@app.websocket("/items/ws")
async def websocket_endpoint(websocket: WebSocket,cookie_or_token: str = Depends(get_cookie_or_token),
):await websocket.accept()await ws_manager.connect(cookie_or_token, websocket)try:while True:data = await websocket.receive_text()await websocket.send_text(f"Message is: {data}")except WebSocketDisconnect as e:await ws_manager.disconnect(cookie_or_token, websocket)

3.测试 

这样我们在链接处理的时候就可以正常处理了。之前报错是因为我们没有正常的关闭链接导致的,那么我们再测试一下

"""
测试websockets
"""from fastapi.testclient import TestClient
from main import appdef test_websocket():client = TestClient(app)with client.websocket_connect("/items/ws?token=fake-token") as websocket:websocket.send_text("Hello, this is testing websocket")data = websocket.receive_text()print(data)assert str(data) == f"Message is: Hello, this is testing websocket"if __name__ == '__main__':test_websocket()

此时,发现代码不会再报错 

 二、增加测试用例并优化

1.增加用例代码

import unittestfrom fastapi.testclient import TestClientfrom main import appclass FastApiTestWeb(unittest.TestCase):def setUp(self) -> None:self.client = TestClient(app)def tearDown(self) -> None:self.client = Nonedef test_websocket(self):with self.client.websocket_connect("/items/ws?token=fake-token") as websocket:websocket.send_text("Hello, this is using test case to test websocket")data = websocket.receive_text()print(data)assert str(data) == "Message is: Hello, this is using test case to test websocket"def test_websocket_again(self):with self.client.websocket_connect("/items/ws?token=fake-token") as websocket:websocket.send_text("Hello, this is using test case to test websocket again")data = websocket.receive_text()print(data)assert str(data) == "Message is: Hello, this is using test case to test websocket again"if __name__ == '__main__':unittest.main()

2.执行用例

这样我们的一个测试用例就更加的完整了。我们执行正常是没有报错的

3. 查看代码的覆盖率 

pip install coverage

我们想要看下代码的覆盖率,应该如何看呢。我是用的coverage。

然后再report

  我们想看html测试报告,可以运行下 coverage html。

然后打开index.html

因为我的main.py还有其他的方法,我们还需要点进去看我们对应方法的覆盖率。

如果想要将覆盖率都达到100%,还需要针对其他方法增加测试用例。

到这里,我们对于WebSockets接口测试完毕,但是如果我们想实现上线通知,下线通知,如何实现呢?见下一节。

http://www.yayakq.cn/news/546247/

相关文章:

  • sql做网站网站制作定制图
  • 网站的主机选择企业服务平台上线
  • 电子商务网站建设 臧良运 好不好wordpress php.ini路径
  • 什么公司做网站好福州 福马路 网站建设
  • 外贸购物网站石家庄网站推广
  • 范县网站建设价格建设银行企业网站访问不了
  • 甘肃省住房和城乡建设厅官方网站企业网站的建立主要用于企业内部发布信息
  • 网站制作公司 信科网络安陆市建设局网站
  • 谁会在西安做网站的吗广告制作公司如何经营
  • 网站怎么做才网络服务费绩效目标申报表
  • 网站建设书籍资料dw网页制作作业
  • 外贸网站建设规划国内管理咨询公司
  • 广西建设厅官网站首页不花钱自己可以做网站吗
  • 吐鲁番市网站建设河北手机网站制作公司
  • 做网站怎么防止被黑专业服务网站开发
  • 博物馆网站建设方案网站开发文件结构组成
  • 青年汇网站开发公司图书馆建设网站注意点
  • 中山网站建设做电销有什么资料网站
  • 商标设计网站猪八戒wordpress自定义远程字体
  • 网站怎么做footerwordpress 男扮女
  • 公司网站建设与维护方案ppt怎样建设论坛网站
  • 哪个网站卖自己做的手工艺品织梦如何做几种语言的网站
  • 云端设计高端网站建设终端安全管理系统
  • 青海建设兵团青岛战友网站python基础教程(第3版)
  • 微信怎么做链接网站网站如何做微信支付宝
  • 如何做一张图片的网站网站seo批量查询工具
  • 四川网站建设php网站开发所需要的软件
  • 如何销售做网站网站规划有哪些内容
  • 深圳做网站哪里好手机网站开发技术pdf
  • 珠海网站建设公司有哪些建免费的网站