pre-commit-hooks: python3.6+
diff --git a/tests/autopep8_wrapper_test.py b/tests/autopep8_wrapper_test.py
index 615ec25..f8030b5 100644
--- a/tests/autopep8_wrapper_test.py
+++ b/tests/autopep8_wrapper_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.autopep8_wrapper import main
diff --git a/tests/check_added_large_files_test.py b/tests/check_added_large_files_test.py
index 2f67d1b..c33a9ca 100644
--- a/tests/check_added_large_files_test.py
+++ b/tests/check_added_large_files_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import distutils.spawn
 
 import pytest
@@ -78,7 +75,7 @@
 @xfailif_no_gitlfs
 def test_allows_gitlfs(temp_git_dir, monkeypatch):  # pragma: no cover
     with temp_git_dir.as_cwd():
-        monkeypatch.setenv(str('HOME'), str(temp_git_dir.strpath))
+        monkeypatch.setenv('HOME', str(temp_git_dir.strpath))
         cmd_output('git', 'lfs', 'install')
         temp_git_dir.join('f.py').write('a' * 10000)
         cmd_output('git', 'lfs', 'track', 'f.py')
@@ -90,7 +87,7 @@
 @xfailif_no_gitlfs
 def test_moves_with_gitlfs(temp_git_dir, monkeypatch):  # pragma: no cover
     with temp_git_dir.as_cwd():
-        monkeypatch.setenv(str('HOME'), str(temp_git_dir.strpath))
+        monkeypatch.setenv('HOME', str(temp_git_dir.strpath))
         cmd_output('git', 'lfs', 'install')
         cmd_output('git', 'lfs', 'track', 'a.bin', 'b.bin')
         # First add the file we're going to move
diff --git a/tests/check_ast_test.py b/tests/check_ast_test.py
index c16f5fc..686fd11 100644
--- a/tests/check_ast_test.py
+++ b/tests/check_ast_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 from pre_commit_hooks.check_ast import main
 from testing.util import get_resource_path
 
diff --git a/tests/check_builtin_literals_test.py b/tests/check_builtin_literals_test.py
index 8e18854..01193e8 100644
--- a/tests/check_builtin_literals_test.py
+++ b/tests/check_builtin_literals_test.py
@@ -7,7 +7,7 @@
 from pre_commit_hooks.check_builtin_literals import Visitor
 
 BUILTIN_CONSTRUCTORS = '''\
-from six.moves import builtins
+import builtins
 
 c1 = complex()
 d1 = dict()
diff --git a/tests/check_byte_order_marker_test.py b/tests/check_byte_order_marker_test.py
index 53cb4a1..9995200 100644
--- a/tests/check_byte_order_marker_test.py
+++ b/tests/check_byte_order_marker_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 from pre_commit_hooks import check_byte_order_marker
 
 
diff --git a/tests/check_case_conflict_test.py b/tests/check_case_conflict_test.py
index 077b41b..53de852 100644
--- a/tests/check_case_conflict_test.py
+++ b/tests/check_case_conflict_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 from pre_commit_hooks.check_case_conflict import find_conflicting_filenames
 from pre_commit_hooks.check_case_conflict import main
 from pre_commit_hooks.util import cmd_output
diff --git a/tests/check_docstring_first_test.py b/tests/check_docstring_first_test.py
index 0973a58..7ad876f 100644
--- a/tests/check_docstring_first_test.py
+++ b/tests/check_docstring_first_test.py
@@ -1,7 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.check_docstring_first import check_docstring_first
diff --git a/tests/check_executables_have_shebangs_test.py b/tests/check_executables_have_shebangs_test.py
index 0cb9dcf..15f0c79 100644
--- a/tests/check_executables_have_shebangs_test.py
+++ b/tests/check_executables_have_shebangs_test.py
@@ -1,7 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.check_executables_have_shebangs import main
@@ -12,7 +8,7 @@
         b'#!/bin/bash\nhello world\n',
         b'#!/usr/bin/env python3.6',
         b'#!python',
-        '#!☃'.encode('UTF-8'),
+        '#!☃'.encode(),
     ),
 )
 def test_has_shebang(content, tmpdir):
@@ -27,7 +23,7 @@
         b' #!python\n',
         b'\n#!python\n',
         b'python\n',
-        '☃'.encode('UTF-8'),
+        '☃'.encode(),
 
     ),
 )
@@ -36,4 +32,4 @@
     path.write(content, 'wb')
     assert main((path.strpath,)) == 1
     _, stderr = capsys.readouterr()
-    assert stderr.startswith('{}: marked executable but'.format(path.strpath))
+    assert stderr.startswith(f'{path}: marked executable but')
diff --git a/tests/check_merge_conflict_test.py b/tests/check_merge_conflict_test.py
index af7cc43..9968507 100644
--- a/tests/check_merge_conflict_test.py
+++ b/tests/check_merge_conflict_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import os
 import shutil
 
diff --git a/tests/check_toml_test.py b/tests/check_toml_test.py
index 1172c40..9f186d1 100644
--- a/tests/check_toml_test.py
+++ b/tests/check_toml_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 from pre_commit_hooks.check_toml import main
 
 
diff --git a/tests/check_vcs_permalinks_test.py b/tests/check_vcs_permalinks_test.py
index 00e5396..b893c98 100644
--- a/tests/check_vcs_permalinks_test.py
+++ b/tests/check_vcs_permalinks_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 from pre_commit_hooks.check_vcs_permalinks import main
 
 
diff --git a/tests/check_yaml_test.py b/tests/check_yaml_test.py
index d267150..2f869d1 100644
--- a/tests/check_yaml_test.py
+++ b/tests/check_yaml_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.check_yaml import main
diff --git a/tests/conftest.py b/tests/conftest.py
index da206cb..f98ae34 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,7 +1,3 @@
-from __future__ import absolute_import
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.util import cmd_output
diff --git a/tests/debug_statement_hook_test.py b/tests/debug_statement_hook_test.py
index d15f5f7..f2cabc1 100644
--- a/tests/debug_statement_hook_test.py
+++ b/tests/debug_statement_hook_test.py
@@ -1,7 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import ast
 
 from pre_commit_hooks.debug_statement_hook import Debug
diff --git a/tests/fix_encoding_pragma_test.py b/tests/fix_encoding_pragma_test.py
index d94b725..f3531f2 100644
--- a/tests/fix_encoding_pragma_test.py
+++ b/tests/fix_encoding_pragma_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import io
 
 import pytest
@@ -129,9 +126,6 @@
 @pytest.mark.parametrize(
     ('input_s', 'expected'),
     (
-        # Python 2 cli parameters are bytes
-        (b'# coding: utf-8', b'# coding: utf-8'),
-        # Python 3 cli parameters are text
         ('# coding: utf-8', b'# coding: utf-8'),
         # trailing whitespace
         ('# coding: utf-8\n', b'# coding: utf-8'),
@@ -149,7 +143,7 @@
     assert main((f.strpath, '--pragma', pragma)) == 1
     assert f.read() == '# coding: utf-8\nx = 1\n'
     out, _ = capsys.readouterr()
-    assert out == 'Added `# coding: utf-8` to {}\n'.format(f.strpath)
+    assert out == f'Added `# coding: utf-8` to {f.strpath}\n'
 
 
 def test_crlf_ok(tmpdir):
diff --git a/tests/forbid_new_submodules_test.py b/tests/forbid_new_submodules_test.py
index 523628d..7619182 100644
--- a/tests/forbid_new_submodules_test.py
+++ b/tests/forbid_new_submodules_test.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import
-
 import subprocess
 
 import pytest
diff --git a/tests/mixed_line_ending_test.py b/tests/mixed_line_ending_test.py
index 8ae9354..c438f74 100644
--- a/tests/mixed_line_ending_test.py
+++ b/tests/mixed_line_ending_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.mixed_line_ending import main
@@ -86,7 +83,7 @@
     assert ret == 1
     assert path.read_binary() == contents
     out, _ = capsys.readouterr()
-    assert out == '{}: mixed line endings\n'.format(path)
+    assert out == f'{path}: mixed line endings\n'
 
 
 def test_fix_lf(tmpdir, capsys):
@@ -97,7 +94,7 @@
     assert ret == 1
     assert path.read_binary() == b'foo\nbar\nbaz\n'
     out, _ = capsys.readouterr()
-    assert out == '{}: fixed mixed line endings\n'.format(path)
+    assert out == f'{path}: fixed mixed line endings\n'
 
 
 def test_fix_crlf(tmpdir):
diff --git a/tests/no_commit_to_branch_test.py b/tests/no_commit_to_branch_test.py
index a2ab1f1..72b32e6 100644
--- a/tests/no_commit_to_branch_test.py
+++ b/tests/no_commit_to_branch_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.no_commit_to_branch import is_on_branch
diff --git a/tests/pretty_format_json_test.py b/tests/pretty_format_json_test.py
index b42e504..59a87f0 100644
--- a/tests/pretty_format_json_test.py
+++ b/tests/pretty_format_json_test.py
@@ -2,7 +2,6 @@
 import shutil
 
 import pytest
-from six import PY2
 
 from pre_commit_hooks.pretty_format_json import main
 from pre_commit_hooks.pretty_format_json import parse_num_to_int
@@ -42,7 +41,6 @@
     assert ret == expected_retval
 
 
-@pytest.mark.skipif(PY2, reason='Requires Python3')
 @pytest.mark.parametrize(
     ('filename', 'expected_retval'), (
         ('not_pretty_formatted_json.json', 1),
@@ -52,7 +50,7 @@
         ('tab_pretty_formatted_json.json', 0),
     ),
 )
-def test_tab_main(filename, expected_retval):  # pragma: no cover
+def test_tab_main(filename, expected_retval):
     ret = main(['--indent', '\t', get_resource_path(filename)])
     assert ret == expected_retval
 
@@ -113,9 +111,9 @@
     expected_retval = 1
     a = os.path.join('a', resource_path)
     b = os.path.join('b', resource_path)
-    expected_out = '''\
---- {}
-+++ {}
+    expected_out = f'''\
+--- {a}
++++ {b}
 @@ -1,6 +1,9 @@
  {{
 -    "foo":
@@ -130,7 +128,7 @@
 +  "blah": null,
 +  "foo": "bar"
  }}
-'''.format(a, b)
+'''
     actual_retval = main([resource_path])
     actual_out, actual_err = capsys.readouterr()
 
diff --git a/tests/readme_test.py b/tests/readme_test.py
index fd6d265..7df7fcf 100644
--- a/tests/readme_test.py
+++ b/tests/readme_test.py
@@ -1,15 +1,10 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
-import io
-
 from pre_commit_hooks.check_yaml import yaml
 
 
 def test_readme_contains_all_hooks():
-    with io.open('README.md', encoding='UTF-8') as f:
+    with open('README.md', encoding='UTF-8') as f:
         readme_contents = f.read()
-    with io.open('.pre-commit-hooks.yaml', encoding='UTF-8') as f:
+    with open('.pre-commit-hooks.yaml', encoding='UTF-8') as f:
         hooks = yaml.load(f)
     for hook in hooks:
-        assert '`{}`'.format(hook['id']) in readme_contents
+        assert f'`{hook["id"]}`' in readme_contents
diff --git a/tests/sort_simple_yaml_test.py b/tests/sort_simple_yaml_test.py
index 4261d5d..69ad388 100644
--- a/tests/sort_simple_yaml_test.py
+++ b/tests/sort_simple_yaml_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import os
 
 import pytest
diff --git a/tests/string_fixer_test.py b/tests/string_fixer_test.py
index 4adca4a..77a51cf 100644
--- a/tests/string_fixer_test.py
+++ b/tests/string_fixer_test.py
@@ -1,7 +1,3 @@
-from __future__ import absolute_import
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import textwrap
 
 import pytest
diff --git a/tests/trailing_whitespace_fixer_test.py b/tests/trailing_whitespace_fixer_test.py
index 97f9aef..53177ac 100644
--- a/tests/trailing_whitespace_fixer_test.py
+++ b/tests/trailing_whitespace_fixer_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.trailing_whitespace_fixer import main
@@ -46,7 +43,7 @@
         '\t\n'  # trailing tabs are stripped anyway
         '\n  ',  # whitespace at the end of the file is removed
     )
-    ret = main((path.strpath, '--markdown-linebreak-ext={}'.format(ext)))
+    ret = main((path.strpath, f'--markdown-linebreak-ext={ext}'))
     assert ret == 1
     assert path.read() == (
         'foo  \n'
diff --git a/tests/util_test.py b/tests/util_test.py
index 9b2d723..b42ee6f 100644
--- a/tests/util_test.py
+++ b/tests/util_test.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import pytest
 
 from pre_commit_hooks.util import CalledProcessError