From 9d229e821ec34122027c0fdfd29a59a7eb7d83c0 Mon Sep 17 00:00:00 2001 From: Cristian Salamea Date: Sat, 14 Nov 2020 16:28:36 -0500 Subject: [PATCH 1/2] [ADD] support context manager on Client --- src/zeep/client.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/zeep/client.py b/src/zeep/client.py index 2e4b5131c..36808dd2d 100644 --- a/src/zeep/client.py +++ b/src/zeep/client.py @@ -211,6 +211,12 @@ def _get_service(self, name: typing.Optional[str]) -> str: service = next(iter(self.wsdl.services.values()), None) return service + def __enter__(self): + return self + + def __exit__(self, exc_type=None, exc_value=None, traceback=None): + self.transport.close() + class AsyncClient(Client): _default_transport = AsyncTransport From a008ac6e8af0f9b81cd40fb5adae3a1ccfb538d1 Mon Sep 17 00:00:00 2001 From: Cristian Salamea Date: Sat, 14 Nov 2020 16:37:07 -0500 Subject: [PATCH 2/2] [ADD] test context manager client --- tests/test_client.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_client.py b/tests/test_client.py index b53c1f3d4..30ac8d5f4 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -43,6 +43,11 @@ def test_service_proxy_non_existing(): assert client_obj.service.NonExisting +def test_context_manager(): + with client.Client("tests/wsdl_files/soap.wsdl") as client: + assert client + + def test_service_proxy_dir_operations(): client_obj = client.Client("tests/wsdl_files/soap.wsdl") operations = [op for op in dir(client_obj.service) if not op.startswith("_")]