diff --git a/test-requirements.txt b/test-requirements.txt
index 8bfb2dd3d3..7a2716f431 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -10,9 +10,9 @@ Babel!=2.4.0,>=2.3.4 # BSD
 PyMySQL>=0.7.6 # MIT License
 iso8601>=0.1.11 # MIT
 oslotest>=3.2.0 # Apache-2.0
+stestr # Apache-2.0
 psycopg2>=2.6.2 # LGPL/ZPL
 testtools>=2.2.0 # MIT
-os-testr>=1.0.0 # Apache-2.0
 testresources>=2.0.0 # Apache-2.0/BSD
 testscenarios>=0.4 # Apache-2.0/BSD
 WebTest>=2.0.27 # MIT
diff --git a/tox.ini b/tox.ini
index 680f57f725..d2ccaf53dc 100644
--- a/tox.ini
+++ b/tox.ini
@@ -14,7 +14,7 @@ setenv = VIRTUAL_ENV={envdir}
          TESTS_DIR=./ironic/tests/unit/
 deps = -r{toxinidir}/test-requirements.txt
 commands =
-    ostestr {posargs}
+    stestr run {posargs}
 passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
 
 [testenv:unit-with-driver-libs]
@@ -48,7 +48,7 @@ setenv = VIRTUAL_ENV={envdir}
          PYTHON=coverage run --source ironic --omit='*tests*' --parallel-mode
 commands =
   coverage erase
-  ostestr {posargs}
+  stestr run {posargs}
   coverage combine
   coverage report --omit='*tests*'
   coverage html -d ./cover --omit='*tests*'