diff --git a/.stestr.conf b/.stestr.conf
new file mode 100644
index 0000000000000000000000000000000000000000..5fcccaca861e750fcf37f412c13e560614c8b3b4
--- /dev/null
+++ b/.stestr.conf
@@ -0,0 +1,3 @@
+[DEFAULT]
+test_path=./unit_tests
+top_dir=./
diff --git a/.testr.conf b/.testr.conf
deleted file mode 100644
index 801646bb85613d0f544705a9f4e6459442204692..0000000000000000000000000000000000000000
--- a/.testr.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-[DEFAULT]
-test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
-             OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
-             OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \
-             ${PYTHON:-python} -m subunit.run discover -t ./ ./unit_tests $LISTOPT $IDOPTION
-
-test_id_option=--load-list $IDFILE
-test_list_option=--list
diff --git a/test-requirements.txt b/test-requirements.txt
index 2b2c0e112e439c220152a5e1961f795b6dfd4b42..272ce1da083912097206ea2662da6191f3b48722 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -5,7 +5,7 @@ charm-tools>=2.4.4
 coverage>=3.6
 mock>=1.2
 flake8>=2.2.4,<=2.4.1
-os-testr>=0.4.1
+stestr>=2.2.0
 requests>=2.18.4
 # BEGIN: Amulet OpenStack Charm Helper Requirements
 # Liberty client lower constraints
diff --git a/tox.ini b/tox.ini
index 0b72fa9e42e34294c8c68177fd301e2909c4a66a..5786385352df5537d5dd26b65fc21b77106dc5b0 100644
--- a/tox.ini
+++ b/tox.ini
@@ -12,7 +12,7 @@ setenv = VIRTUAL_ENV={envdir}
          AMULET_SETUP_TIMEOUT=5400
 install_command =
   pip install {opts} {packages}
-commands = ostestr {posargs}
+commands = stestr run {posargs}
 whitelist_externals = juju
 passenv = HOME TERM AMULET_* CS_API_*