面具女巫 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 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接
  • ¥15 MATLAB中使用parfor,矩阵Removal的有效索引在parfor循环中受限制
  • ¥20 Win 10 LTSC 1809版本如何无损提升到20H1版本
  • ¥50 win10 LTSC 虚拟键盘不弹出
  • ¥15 寻找能匹配的液晶显示屏。