diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py
index f2ca8fc93be9289939609a090ea323727b02e478..8cbc0fbccf3a2d3acf5e99ef5b56710f48ac02a9 100644
--- a/lib/spack/spack/cmd/test.py
+++ b/lib/spack/spack/cmd/test.py
@@ -154,7 +154,7 @@ def test(parser, args, unknown_args):
 
     # The default is to test the core of Spack. If the option `--extension`
     # has been used, then test that extension.
-    pytest_root = spack.paths.test_path
+    pytest_root = spack.paths.spack_root
     if args.extension:
         target = args.extension
         extensions = spack.config.get('config:extensions')
diff --git a/lib/spack/spack/test/cmd/test.py b/lib/spack/spack/test/cmd/test.py
index 9a64209cfa63f81f0d7f24860455c121fd583396..a9ef735afe56610f21870a2c79a191e6651412f2 100644
--- a/lib/spack/spack/test/cmd/test.py
+++ b/lib/spack/spack/test/cmd/test.py
@@ -6,6 +6,7 @@
 from spack.main import SpackCommand
 
 spack_test = SpackCommand('test')
+cmd_test_py = 'lib/spack/spack/test/cmd/test.py'
 
 
 def test_list():
@@ -16,13 +17,13 @@ def test_list():
 
 
 def test_list_with_pytest_arg():
-    output = spack_test('--list', 'cmd/test.py')
-    assert output.strip() == "cmd/test.py"
+    output = spack_test('--list', cmd_test_py)
+    assert output.strip() == cmd_test_py
 
 
 def test_list_with_keywords():
     output = spack_test('--list', '-k', 'cmd/test.py')
-    assert output.strip() == "cmd/test.py"
+    assert output.strip() == cmd_test_py
 
 
 def test_list_long(capsys):
@@ -44,7 +45,7 @@ def test_list_long(capsys):
 
 def test_list_long_with_pytest_arg(capsys):
     with capsys.disabled():
-        output = spack_test('--list-long', 'cmd/test.py')
+        output = spack_test('--list-long', cmd_test_py)
     assert "test.py::\n" in output
     assert "test_list" in output
     assert "test_list_with_pytest_arg" in output
@@ -74,7 +75,7 @@ def test_list_names():
 
 
 def test_list_names_with_pytest_arg():
-    output = spack_test('--list-names', 'cmd/test.py')
+    output = spack_test('--list-names', cmd_test_py)
     assert "test.py::test_list\n" in output
     assert "test.py::test_list_with_pytest_arg\n" in output
     assert "test.py::test_list_with_keywords\n" in output
diff --git a/lib/spack/spack/test/llnl/util/log.py b/lib/spack/spack/test/llnl/util/log.py
index 1eae1ccf69e92181fdc55c88a48c1739009b6a84..0c879c5a6edfedcf6b452f476024a13568e4c427 100644
--- a/lib/spack/spack/test/llnl/util/log.py
+++ b/lib/spack/spack/test/llnl/util/log.py
@@ -32,7 +32,8 @@ def test_log_python_output_with_fd_stream(capfd, tmpdir):
         with open('foo.txt') as f:
             assert f.read() == 'logged\n'
 
-        assert capfd.readouterr() == ('', '')
+        # Coverage is cluttering stderr during tests
+        assert capfd.readouterr()[0] == ''
 
 
 def test_log_python_output_and_echo_output(capfd, tmpdir):
@@ -42,7 +43,8 @@ def test_log_python_output_and_echo_output(capfd, tmpdir):
                 print('echo')
             print('logged')
 
-        assert capfd.readouterr() == ('echo\n', '')
+        # Coverage is cluttering stderr during tests
+        assert capfd.readouterr()[0] == 'echo\n'
 
         with open('foo.txt') as f:
             assert f.read() == 'echo\nlogged\n'
@@ -75,7 +77,8 @@ def test_log_subproc_and_echo_output(capfd, tmpdir):
                 echo('echo')
             print('logged')
 
-        assert capfd.readouterr() == ('echo\n', '')
+        # Coverage is cluttering stderr during tests
+        assert capfd.readouterr()[0] == 'echo\n'
 
         with open('foo.txt') as f:
             assert f.read() == 'logged\n'
diff --git a/lib/spack/spack/test/pytest.ini b/pytest.ini
similarity index 90%
rename from lib/spack/spack/test/pytest.ini
rename to pytest.ini
index 59839c0005c0ef68b35974d71e209ecd5c1769cc..baf163ef0b4c74f2c0cfb31f88490169fea368e6 100644
--- a/lib/spack/spack/test/pytest.ini
+++ b/pytest.ini
@@ -1,7 +1,7 @@
 # content of pytest.ini
 [pytest]
 addopts = --durations=20 -ra
-testpaths = .
+testpaths = lib/spack/spack/test
 python_files = *.py
 markers =
   db: tests that require creating a DB
diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests
index 52748dacdf68c0f85850cfcd5d60a796a9a50cd5..01f564e5e1f3058bb61486b998a2e4cbe2ec051c 100755
--- a/share/spack/qa/run-unit-tests
+++ b/share/spack/qa/run-unit-tests
@@ -37,16 +37,12 @@ bin/spack -h
 bin/spack help -a
 
 # Profile and print top 20 lines for a simple call to spack spec
-bin/spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
+spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
 
 #-----------------------------------------------------------
 # Run unit tests with code coverage
 #-----------------------------------------------------------
-extra_args=""
-if [[ -n "$@" ]]; then
-    extra_args="-k $@"
-fi
-$coverage_run bin/spack test -x --verbose "$extra_args"
+$coverage_run $(which spack) test -x --verbose
 
 #-----------------------------------------------------------
 # Run tests for setup-env.sh