Я пытаюсь смоделировать переменную websocket в моем классе.
Я пробовал это, а также многие другие способы попытки фиктивного исправления переменной websocket, но я никогда не видел, чтобы какие-либо фиктивные вызовы проходили. Я бы просто утверждал это с клиентом, но я хочу научиться тестировать с помощью насмешек.
class ServerTest(unittest.TestCase):
@mock.patch('websockets.server.WebSocketServerProtocol')
def test_add_user(self, mocked_socket):
mocked_socket.recv.return_value = "some string"
expected = "return string"
print(mocked_socket.mock_calls)
mocked_socket.send.assert_called_with(expected)
if __name__ == '__main__':
unittest.main()
Я пытался разработать фиктивный тест для моего сервера Python, и мне очень трудно пытаться смоделировать переменную websocket в этом классе
import asyncio
import websockets
import json
import db_flask
class JsonWrapper:
def __init__(self, data):
self.data = data
def get(self, key):
if(key in self.data):
return(self.data[key])
class Server:
async def handle(websocket, path):
data = await websocket.recv()
print(f"data received: {data}")
data = json.loads(data)
action = data["Message"]
if(action == "!join"):
username = db_flask.new_user(JsonWrapper(data))
data_to_send = db_flask.get_user_by_username(username)
print(f"sending data:{data_to_send}")
await websocket.send(json.dumps(data_to_send))
def run_server():
db_flask.create_database()
s = Server()
start_server = websockets.serve(s.handle, "localhost", 5555)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever() # // disable this when testing?
if __name__ == '__main__':
run_server()
Я хочусделать что-то вроде websocket.recv.return_value = "some string"
python3 test1.py
[]
F
======================================================================
FAIL: test_add_user (__main__.ServerTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/mock/mock.py", line 1330, in patched
return func(*args, **keywargs)
File "test1.py", line 17, in test_add_user
mocked_socket.send.assert_called_with(expected)
File "/usr/local/lib/python3.6/dist-packages/mock/mock.py", line 932, in assert_called_with
raise AssertionError(error_message)
AssertionError: expected call not found.
Expected: send("return string")
Actual: not called.