Unit testing
Python-sdbus provides several utilities to enable unit testing.
- class sdbus.unittest.IsolatedDbusTestCase
Extension of unittest.IsolatedAsyncioTestCase from standard library.
Creates an isolated instance of session D-Bus. The D-Bus will be closed and cleaned up after tests are finished.
Requires
dbus-daemon
executable be installed.- bus: SdBus
Bus instance connected to isolated D-Bus environment.
It is also set as a default bus.
Usage example:
from sdbus import DbusInterfaceCommonAsync, dbus_method_async
from sdbus.unittest import IsolatedDbusTestCase
class TestInterface(DbusInterfaceCommonAsync,
interface_name='org.test.test',
):
@dbus_method_async("s", "s")
async def upper(self, string: str) -> str:
"""Uppercase the input"""
return string.upper()
def initialize_object() -> Tuple[TestInterface, TestInterface]:
test_object = TestInterface()
test_object.export_to_dbus('/')
test_object_connection = TestInterface.new_proxy(
"org.example.test", '/')
return test_object, test_object_connection
class TestProxy(IsolatedDbusTestCase):
async def asyncSetUp(self) -> None:
await super().asyncSetUp()
await self.bus.request_name_async("org.example.test", 0)
async def test_method_kwargs(self) -> None:
test_object, test_object_connection = initialize_object()
self.assertEqual(
'TEST',
await test_object_connection.upper('test'),
)