# process, which may cause wedges in the gate later.
 coverage!=4.4 # Apache-2.0
 mock!=4.0.0,!=4.0.1 # BSD
-nose # LGPL
+pytest  # MIT
+pytest-html  #MPL-2.0
+pytest-cov
 flake8 # MIT
 pylint # GPLv2
 yamllint
 
 [tox]
-envlist = pep8,pylint,yamllint,bashate,py39,bandit,perm
+envlist = pep8,pylint,yamllint,bashate,py310,bandit,perm
 
 [testenv]
 pip_version = pip==20.2.4
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/test-requirements.txt
 install_command = pip install {opts} {packages}
-commands = nosetests --with-xunit \
-  --with-coverage \
-  --cover-tests \
-  --cover-package=functest_kubernetes \
-  --cover-xml \
-  --cover-html \
-  functest_kubernetes
+commands =
+  pytest \
+    --junit-xml=junit.xml \
+    --html=report.html --self-contained-html \
+    --cov=xtesting --cov-reset --cov-report html \
+    functest_kubernetes
 
 [testenv:pep8]
 basepython = python3.10
 basepython = python3.10
 commands = bandit -r functest_kubernetes -x tests -n 5 -ll
 
-[testenv:py37]
-commands = nosetests functest_kubernetes
-
 [testenv:bashate]
 basepython = python3.10
 files =