面具女巫 2021-07-20 09:15 采纳率: 75%
浏览 35
已结题

WebSocketApp和Pytest是不是冲突?

1,如果用Pytest执行,则长链接会被挂起
2,如果用python直接执行,则Pytest的测试用例会被挂起

求解决方法:
怎么样能在保持长链接的情况下,也用pytest执行测试用例

  • 写回答

1条回答 默认 最新

  • 咕泡-三木 2021-07-23 18:51
    关注

    WebSocket是全双工长链接通讯协议,测试方法和HTTP有所不同

    1. 使用专业的websocket客户端建立链接
    2. 根据全双工的特性,分别对读、写进行数据传输
    3. 考虑到长链接特性,在夹具中要及时关闭连接,同时为给用例设置超时

    代码示例

    class ServerTestCase:
        """公众号:测试开发研习社"""
        def test_echo(self):
            client = self._get_client() #建立连接
    
            self.logger.info("准备发送数据")
            send_data = "a".encode()
            client.sendall(send_data)  # 发送的是字节流
            self.logger.info("数据发送完毕")
    
            client.settimeout(2) 
            recv_data = client.recv(1024)  # 如果没有设置超时,可能挂起等很久
            self.logger.info("收到回复")
            self.assertEqual(send_data, recv_data)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月9日
  • 已采纳回答 9月1日
  • 创建了问题 7月20日

悬赏问题

  • ¥15 dir815漏洞反弹shell失败
  • ¥15 支付宝小程序云函数登录获取user_id失败
  • ¥50 python for 循环速度慢
  • ¥15 CubeMX生成的代码用keil编译有报错
  • ¥15 Stata链式中介效应代码修改
  • ¥15 pip安装PyAV报错
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住