diff --git a/setup.py b/setup.py
index dddebde631cb1cf942d64b8b402b5f58ebb732cf..c1eb161a61958776aedf6ebd830b0757a3189577 100644
--- a/setup.py
+++ b/setup.py
@@ -14,7 +14,7 @@ requirements=[]
 
 setup_requirements = ['pytest-runner', 'pytest'] if TESTING else []
 
-test_requirements = ['pytest-cov', 'mock']
+test_requirements = ['pytest-cov', 'pytest', 'mock', 'nosqltangodb']
 
 setup(
     author="Clemence Muzelle",
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000000000000000000000000000000000000..eb0344cf6017f5848fe962e2307e4836d491d2ea
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,28 @@
+import pytest
+import os
+import contextlib
+from nosqltangodb import helper
+
+
+@contextlib.contextmanager
+def context_yaml_db_server():
+
+    test_root = os.path.dirname(__file__)
+    yaml_root = os.path.join(test_root, "tangodb")
+
+    with helper.running_db(
+        name="2",
+        db_access="yaml",
+        port="auto",
+        debug_protocol=True,
+        yaml_root=yaml_root,
+        update_tango_host=True,
+        timeout=10,
+    ) as db:
+        yield db.port
+
+
+@pytest.fixture(scope="session")
+def db_server():
+    with context_yaml_db_server() as s:
+        yield s
diff --git a/tests/tangodb/sample_changer.yml b/tests/tangodb/sample_changer.yml
new file mode 100644
index 0000000000000000000000000000000000000000..eb4e56c773d623bac2f27dcceeda7e822164eb29
--- /dev/null
+++ b/tests/tangodb/sample_changer.yml
@@ -0,0 +1,9 @@
+personal_name: sample_changer
+server: TomoSampleChanger
+device:
+- class: TomoSampleChanger
+  tango_name: id00/tango/sample_changer
+  properties:
+    # one of sim, bm05, id19
+    robot_controller: sim
+    robot_host: 127.0.0.1.mocked
diff --git a/tests/tangodb/samples.yml b/tests/tangodb/samples.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6273eded2504cae82332a7b67be1a4a49158e5c7
--- /dev/null
+++ b/tests/tangodb/samples.yml
@@ -0,0 +1,122 @@
+personal_name: samples
+server: TomoSamples
+device:
+- class: TomoSamples
+  tango_name: id00/tango/samples
+
+- class: TomoSample
+  tango_name: id00/tomo-sample/A0
+- class: TomoSample
+  tango_name: id00/tomo-sample/A1
+- class: TomoSample
+  tango_name: id00/tomo-sample/A2
+- class: TomoSample
+  tango_name: id00/tomo-sample/A3
+- class: TomoSample
+  tango_name: id00/tomo-sample/A4
+- class: TomoSample
+  tango_name: id00/tomo-sample/A5
+- class: TomoSample
+  tango_name: id00/tomo-sample/A6
+# - class: TomoSample
+#   tango_name: id00/tomo-sample/A7
+# - class: TomoSample
+#   tango_name: id00/tomo-sample/A8
+- class: TomoSample
+  tango_name: id00/tomo-sample/A9
+- class: TomoSample
+  tango_name: id00/tomo-sample/A10
+- class: TomoSample
+  tango_name: id00/tomo-sample/A11
+- class: TomoSample
+  tango_name: id00/tomo-sample/A12
+- class: TomoSample
+  tango_name: id00/tomo-sample/A13
+- class: TomoSample
+  tango_name: id00/tomo-sample/A14
+- class: TomoSample
+  tango_name: id00/tomo-sample/A15
+- class: TomoSample
+  tango_name: id00/tomo-sample/A16
+- class: TomoSample
+  tango_name: id00/tomo-sample/A17
+- class: TomoSample
+  tango_name: id00/tomo-sample/A18
+
+- class: TomoSample
+  tango_name: id00/tomo-sample/B0
+- class: TomoSample
+  tango_name: id00/tomo-sample/B1
+- class: TomoSample
+  tango_name: id00/tomo-sample/B2
+- class: TomoSample
+  tango_name: id00/tomo-sample/B3
+- class: TomoSample
+  tango_name: id00/tomo-sample/B4
+- class: TomoSample
+  tango_name: id00/tomo-sample/B5
+- class: TomoSample
+  tango_name: id00/tomo-sample/B6
+# - class: TomoSample
+#   tango_name: id00/tomo-sample/B7
+# - class: TomoSample
+#   tango_name: id00/tomo-sample/B8
+- class: TomoSample
+  tango_name: id00/tomo-sample/B9
+- class: TomoSample
+  tango_name: id00/tomo-sample/B10
+- class: TomoSample
+  tango_name: id00/tomo-sample/B11
+- class: TomoSample
+  tango_name: id00/tomo-sample/B12
+- class: TomoSample
+  tango_name: id00/tomo-sample/B13
+- class: TomoSample
+  tango_name: id00/tomo-sample/B14
+- class: TomoSample
+  tango_name: id00/tomo-sample/B15
+- class: TomoSample
+  tango_name: id00/tomo-sample/B16
+- class: TomoSample
+  tango_name: id00/tomo-sample/B17
+- class: TomoSample
+  tango_name: id00/tomo-sample/B18
+
+- class: TomoSample
+  tango_name: id00/tomo-sample/C0
+- class: TomoSample
+  tango_name: id00/tomo-sample/C1
+- class: TomoSample
+  tango_name: id00/tomo-sample/C2
+- class: TomoSample
+  tango_name: id00/tomo-sample/C3
+- class: TomoSample
+  tango_name: id00/tomo-sample/C4
+- class: TomoSample
+  tango_name: id00/tomo-sample/C5
+- class: TomoSample
+  tango_name: id00/tomo-sample/C6
+# - class: TomoSample
+#   tango_name: id00/tomo-sample/C7
+# - class: TomoSample
+#   tango_name: id00/tomo-sample/C8
+- class: TomoSample
+  tango_name: id00/tomo-sample/C9
+- class: TomoSample
+  tango_name: id00/tomo-sample/C10
+- class: TomoSample
+  tango_name: id00/tomo-sample/C11
+- class: TomoSample
+  tango_name: id00/tomo-sample/C12
+- class: TomoSample
+  tango_name: id00/tomo-sample/C13
+- class: TomoSample
+  tango_name: id00/tomo-sample/C14
+- class: TomoSample
+  tango_name: id00/tomo-sample/C15
+- class: TomoSample
+  tango_name: id00/tomo-sample/C16
+- class: TomoSample
+  tango_name: id00/tomo-sample/C17
+- class: TomoSample
+  tango_name: id00/tomo-sample/C18
diff --git a/tests/test_sample_changer.py b/tests/test_sample_changer.py
new file mode 100644
index 0000000000000000000000000000000000000000..b70a86bcc3d14fc5e3779fbc649280d56c19d788
--- /dev/null
+++ b/tests/test_sample_changer.py
@@ -0,0 +1,28 @@
+import os
+import sys
+import pytest
+import tango
+from nosqltangodb.utils import tango_utils
+
+
+@pytest.fixture
+def sample_changer_tango_server(db_server):
+    tango_host = os.environ["TANGO_HOST"]
+    db_host, db_port = tango_host.split(":")
+    device_name = "id00/tango/sample_changer"
+    device_fqdn = f"tango://{db_host}:{db_port}/{device_name}"
+    with tango_utils.start_tango_server(
+        sys.executable,
+        "-u",
+        "-m",
+        "samplechanger.sample_changer_ds.TomoSampleChanger",
+        "sample_changer",
+        device_fqdn=device_fqdn,
+        state=tango.DevState.ON,
+    ) as dev_proxy:
+        yield device_fqdn, dev_proxy
+
+
+def test_sample_changer(sample_changer_tango_server):
+    sample_changer_proxy = sample_changer_tango_server[1]
+    assert sample_changer_proxy
\ No newline at end of file
diff --git a/tests/test_samples.py b/tests/test_samples.py
new file mode 100644
index 0000000000000000000000000000000000000000..cfc4eb9d3c4a067759ac46e8ac79140dc3595736
--- /dev/null
+++ b/tests/test_samples.py
@@ -0,0 +1,28 @@
+import os
+import sys
+import pytest
+import tango
+from nosqltangodb.utils import tango_utils
+
+
+@pytest.fixture
+def samples_tango_server(db_server):
+    tango_host = os.environ["TANGO_HOST"]
+    db_host, db_port = tango_host.split(":")
+    device_name = "id00/tango/samples"
+    device_fqdn = f"tango://{db_host}:{db_port}/{device_name}"
+    with tango_utils.start_tango_server(
+        sys.executable,
+        "-u",
+        "-m",
+        "samplechanger.samples_ds.TomoSamples",
+        "samples",
+        device_fqdn=device_fqdn,
+        state=tango.DevState.DISABLE,
+    ) as dev_proxy:
+        yield device_fqdn, dev_proxy
+
+
+def test_samples(samples_tango_server):
+    samples_proxy = samples_tango_server[1]
+    assert samples_proxy
\ No newline at end of file