diff --git a/.gitignore b/.gitignore
index e1cf205905d93c46016f27f9e4df6a1da11cfd86..966ef052e8cb1dfe9ab17eff54ee874231f5dbb0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,4 @@ __pycache__
 .vagrant/
 *.log
 *.retry
+.tox
diff --git a/.travis.yml b/.travis.yml
index 110a35a5e7721a77d423a0e102c69097f4f76d2c..211dd1bca2db18e80ff9a4c3503735ca67efda9b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,14 +8,15 @@ env:
     global:
         - VBOX_MEMORY=2048
     matrix:
-        - platform: openbsd60
-        - &openbsd59 platform=openbsd59
-        - platform: xenial
-        - platform: trusty
-        - platform: precise
-        - &stretch platform=stretch
-        - platform: jessie
-        - platform: wheezy
+        - TOXENV=pre-commit
+        - TOXENV=openbsd60
+        - &openbsd59 TOXENV=openbsd59
+        - TOXENV=xenial
+        - TOXENV=trusty
+        - TOXENV=precise
+        - &stretch TOXENV=stretch
+        - TOXENV=jessie
+        - TOXENV=wheezy
 matrix:
     fast_finish: True
     allow_failures:
@@ -32,13 +33,10 @@ install:
   - sudo apt-get install -y linux-headers-$(uname -r) virtualbox
   - wget https://releases.hashicorp.com/vagrant/1.9.1/vagrant_1.9.1_x86_64.deb
   - sudo dpkg -i vagrant_1.9.1_x86_64.deb
-  - pip install -r tests/requirements.txt | cat
-  - ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles
-  - molecule dependency
+  - pip install tox | cat
 
 script:
-  - pre-commit run --all-files
-  - travis_wait 45 molecule test --platform $platform
+  - travis_wait 45 tox
 
 notifications:
   webhooks: https://galaxy.ansible.com/api/v1/notifications/
diff --git a/molecule.yml b/molecule.yml
index eb1bc5a972d02b4cfef2d38d47accdf26ac56931..da87f7ab5478d1327d485feece04da28bbc98e11 100644
--- a/molecule.yml
+++ b/molecule.yml
@@ -5,6 +5,10 @@ ansible:
   diff: True
   config_file: ../ansible.cfg
 
+molecule:
+  ignore_paths:
+  - .tox
+
 dependency:
   name: galaxy
   requirements_file: tests/requirements.yml
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000000000000000000000000000000000000..9f02b87ddc27c541707de71496512c2dbd1bc799
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,22 @@
+[tox]
+skip_install = True
+skipsdist = True
+envlist = openbsd60,openbsd59,xenial,trusty,precise,stretch,jessie,wheezy
+
+[testenv:pre-commit]
+deps = -rtests/requirements.txt
+whitelist_externals =
+    sh
+commands =
+    sh -c "ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles"
+    molecule dependency
+    pre-commit run --all-files
+
+[testenv]
+deps = -rtests/requirements.txt
+passenv = HOME
+whitelist_externals =
+    sh
+commands =
+    sh -c "ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles"
+    molecule test --platform {envname}