From bba21e3241175f2782e1003ec46ac5ba6a83fad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 8 Apr 2024 11:28:01 +0200 Subject: [PATCH] adds Client tests --- tests/client/test_client.py | 71 +++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/client/test_client.py diff --git a/tests/client/test_client.py b/tests/client/test_client.py new file mode 100644 index 0000000..81b968b --- /dev/null +++ b/tests/client/test_client.py @@ -0,0 +1,71 @@ +import threading +import time +from collections.abc import Generator +from typing import Any + +import pydase +import pytest +from pydase.client.proxy_loader import ProxyAttributeError + + +@pytest.fixture(scope="session") +def pydase_server() -> Generator[pydase.Server, None, Any]: + class MyService(pydase.DataService): + def __init__(self) -> None: + super().__init__() + self._name = "MyService" + self._my_property = 12.1 + + @property + def my_property(self) -> float: + return self._my_property + + @my_property.setter + def my_property(self, value: float) -> None: + self._my_property = value + + @property + def name(self) -> str: + return self._name + + def my_method(self, input_str: str) -> str: + return input_str + + server = pydase.Server(MyService(), web_port=9999) + thread = threading.Thread(target=server.run) + thread.start() + time.sleep(0.1) # Wait for the server to start + + yield server + + server.handle_exit() + thread.join() + + +def test_property(pydase_server: pydase.Server) -> None: + client = pydase.Client(port=9999) + + assert client.proxy.my_property == 12.1 + client.proxy.my_property = 2.1 + assert client.proxy.my_property == 2.1 + + +def test_readonly_property(pydase_server: pydase.Server) -> None: + client = pydase.Client(port=9999) + + assert client.proxy.name == "MyService" + with pytest.raises(ProxyAttributeError): + client.proxy.name = "Hello" + + +def test_method_execution(pydase_server: pydase.Server) -> None: + client = pydase.Client(port=9999) + + assert client.proxy.my_method("My return string") == "My return string" + assert client.proxy.my_method(input_str="My return string") == "My return string" + + with pytest.raises(TypeError): + client.proxy.my_method("Something", 2) + + with pytest.raises(TypeError): + client.proxy.my_method(kwarg="hello")