diff --git a/pre_commit_hooks/tests_should_end_in_test.py b/pre_commit_hooks/tests_should_end_in_test.py
index e1ffe36..e7842af 100644
--- a/pre_commit_hooks/tests_should_end_in_test.py
+++ b/pre_commit_hooks/tests_should_end_in_test.py
@@ -9,23 +9,42 @@
 def main(argv: Sequence[str] | None = None) -> int:
     parser = argparse.ArgumentParser()
     parser.add_argument('filenames', nargs='*')
-    parser.add_argument(
-        '--django', default=False, action='store_true',
-        help='Use Django-style test naming pattern (test*.py)',
+    mutex = parser.add_mutually_exclusive_group()
+    mutex.add_argument(
+        '--pytest',
+        dest='pattern',
+        action='store_const',
+        const=r'.*_test\.py',
+        default=r'.*_test\.py',
+        help='(the default) ensure tests match %(const)s',
+    )
+    mutex.add_argument(
+        '--pytest-test-first',
+        dest='pattern',
+        action='store_const',
+        const=r'test_.*\.py',
+        help='ensure tests match %(const)s',
+    )
+    mutex.add_argument(
+        '--django', '--unittest',
+        dest='pattern',
+        action='store_const',
+        const=r'test.*\.py',
+        help='ensure tests match %(const)s',
     )
     args = parser.parse_args(argv)
 
     retcode = 0
-    test_name_pattern = r'test.*\.py' if args.django else r'.*_test\.py'
+    reg = re.compile(args.pattern)
     for filename in args.filenames:
         base = os.path.basename(filename)
         if (
-                not re.match(test_name_pattern, base) and
+                not reg.fullmatch(base) and
                 not base == '__init__.py' and
                 not base == 'conftest.py'
         ):
             retcode = 1
-            print(f'{filename} does not match pattern "{test_name_pattern}"')
+            print(f'{filename} does not match pattern "{args.pattern}"')
 
     return retcode
 
