When you pass invalid interpreter to tox command it installs dependencies, requirements in virtual environment and exits without running any tests. Actually it should throw error, Interpreter Not Found.
tox -e py23
py23 create: /opt/stack/glance/.tox/py23
py23 installdeps: -r/opt/stack/glance/test-requirements.txt
py23 develop-inst: /opt/stack/glance
py23 installed: alabaster==0.7.12,alembic==1.0.10,amqp==2.4.2,appdirs==1.4.3,asn1crypto==0.24.0,automaton==1.16.0,Babel==2.6.0,cachetools==3.1.0,castellan==1.2.2,certifi==2019.3.9,cffi==1.12.3,chardet==3.0.4,cliff==2.14.1,cmd2==0.8.9,coverage==4.5.3,cryptography==2.6.1,cursive==0.2.2,ddt==1.2.1,debtcollector==1.21.0,decorator==4.4.0,defusedxml==0.6.0,dnspython==1.15.0,doc8==0.8.0,docutils==0.14,dogpile.cache==0.7.1,eventlet==0.24.1,extras==1.0.0,fasteners==0.14.1,fixtures==3.0.0,flake8==2.5.5,future==0.17.1,futurist==1.8.1,-e git+https://git.openstack.org/openstack/glance.git@18e71c8e759aa4031da6258bff519ae206145fe6#egg=glance,glance-store==0.28.0,greenlet==0.4.15,hacking==0.12.0,httplib2==0.12.3,idna==2.8,imagesize==1.1.0,iso8601==0.1.12,Jinja2==2.10.1,jmespath==0.9.4,jsonpatch==1.23,jsonpointer==2.0,jsonschema==2.6.0,keystoneauth1==3.14.0,keystonemiddleware==6.0.0,kombu==4.5.0,linecache2==1.0.0,Mako==1.0.9,MarkupSafe==1.1.1,mccabe==0.2.1,mock==3.0.4,monotonic==1.5,mox3==0.27.0,msgpack==0.6.1,munch==2.3.2,netaddr==0.7.19,netifaces==0.10.9,networkx==2.3,openstacksdk==0.27.0,os-client-config==1.32.0,os-service-types==1.7.0,os-win==4.2.0,oslo.cache==1.34.0,oslo.concurrency==3.29.1,oslo.config==6.9.0,oslo.context==2.22.1,oslo.db==4.46.0,oslo.i18n==3.23.1,oslo.log==3.43.0,oslo.messaging==9.6.0,oslo.middleware==3.38.0,oslo.policy==2.2.0,oslo.serialization==2.29.0,oslo.service==1.38.0,oslo.upgradecheck==0.2.1,oslo.utils==3.41.0,oslotest==3.7.1,osprofiler==2.7.0,packaging==19.0,Paste==3.0.8,PasteDeploy==2.0.1,pbr==5.2.0,pep8==1.5.7,prettytable==0.7.2,psutil==5.6.2,psycopg2==2.8.2,pycadf==2.9.0,pycparser==2.19,pydot==1.4.1,pyflakes==0.8.1,Pygments==2.4.0,pyinotify==0.9.6,PyMySQL==0.9.3,pyOpenSSL==19.0.0,pyparsing==2.4.0,pyperclip==1.7.0,pysendfile==2.0.1,python-barbicanclient==4.8.1,python-dateutil==2.8.0,python-editor==1.0.4,python-keystoneclient==3.19.0,python-mimeparse==1.6.0,python-subunit==1.3.0,python-swiftclient==3.7.0,pytz==2019.1,PyYAML==5.1,repoze.lru==0.7,requests==2.21.0,requestsexceptions==1.4.0,restructuredtext-lint==1.3.0,retrying==1.3.3,rfc3986==1.3.1,Routes==2.4.1,simplegeneric==0.8.1,six==1.12.0,snowballstemmer==1.2.1,Sphinx==2.0.1,sphinxcontrib-applehelp==1.0.1,sphinxcontrib-devhelp==1.0.1,sphinxcontrib-htmlhelp==1.0.2,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.2,sphinxcontrib-serializinghtml==1.1.3,SQLAlchemy==1.2.18,sqlalchemy-migrate==0.12.0,sqlparse==0.3.0,statsd==3.3.0,stestr==2.3.1,stevedore==1.30.1,taskflow==3.4.0,Tempita==0.5.2,tenacity==5.0.4,testrepository==0.0.20,testresources==2.0.1,testscenarios==0.5.0,testtools==2.3.0,traceback2==1.4.0,unittest2==1.1.0,urllib3==1.24.3,vine==1.3.0,voluptuous==0.11.5,wcwidth==0.1.7,WebOb==1.8.5,wrapt==1.11.1,WSME==0.9.3,xattr==0.9.6,yappi==1.0
py23 run-test-pre: PYTHONHASHSEED='1359514857'
py23 runtests: commands[0] | find . -type f -name '*.pyc' -delete
________________________________________________ summary _________________________________________________
py23: commands succeeded
congratulations :)
For nova and glance it doesn't run the tests, but for cinder it executes the tests as well. A virtual environment directory py23 is created under .tox directory.