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 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("_")]