WebSocketApp和Pytest是不是冲突?

WebSocketApp和Pytest是不是冲突?

问题描述:

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

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

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)