广告区
广告区
关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)
发布于2022-05-21 12:13 阅读(787) 评论(0) 点赞(4) 收藏(1)
Django Channels 建议使用 pytest 以获得启用异步的测试层。如果可以的话,我真的不想在我的项目中加入另一个测试框架。
有没有办法在本地使用 Django 的 TestCase 来测试 Django Channels?
我遇到了多个问题——一个是 async_to_sync() 不喜欢从主线程调用。
我目前受限于 Python 3.6。
我相信我已经找到了一种可靠的方法来做到这一点。这还没有做 DRY,但它是一个似乎适用于这个测试的概念证明:
class TestWebSockets(TestCase):
def test_message(self):
async def wait_for_message(self):
try:
communicator = WebsocketCommunicator(application, f"/ws/channel/")
connected, subprotocol = await communicator.connect()
self.assertTrue(connected)
data = await communicator.receive_json_from(timeout=1)
return data
except Exception as exc:
logging.exception(exc)
raise
finally:
await communicator.disconnect()
with concurrent.futures.ThreadPoolExecutor() as executor:
future = executor.submit(async_to_sync(wait_for_message), self)
DoTheThingThatGeneratesChannelMessage()
message = future.result()
print(message)
关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)
关注公众号回复python,免费领取 全套python视频,回复充值+你的账号,免费为您充值1000积分
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/1533941/ae25e93f0e064b69bdcb/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!