def METHOD_NAME(
    TestClass: Type[BaseTest],
    test_function: Callable,
    global_test_mode: AcceptanceTestConfig.TestStrictnessLevel,
    test_configuration: GenericTestConfig,
) -> Tuple[TestAction, str]:
    """Use the current test strictness level and test configuration to determine if the discovered test should be parametrized, skipped or failed.
    We parametrize a test if:
      - the configuration declares tests.
    We skip a test if:
      - the configuration does not declare tests and:
        - the current test mode allows this test to be skipped.
        - Or a bypass_reason is declared in the test configuration.
    We fail a test if:
        - the configuration does not declare the test but the discovered test is declared as mandatory for the current test strictness level.
    Args:
        TestClass (Type[BaseTest]): The discovered test class
        test_function (Callable): The discovered test function
        global_test_mode (AcceptanceTestConfig.TestStrictnessLevel): The global test strictness level (from the global configuration object)
        test_configuration (GenericTestConfig): The current test configuration.
    Returns:
        Tuple[TestAction, str]: The test action the execution should take and the reason why.
    """
    test_name = f"{TestClass.__name__}.{test_function.__name__}"
    test_mode_can_skip_this_test = global_test_mode not in TestClass.MANDATORY_FOR_TEST_STRICTNESS_LEVELS
    skipping_reason_prefix = f"Skipping {test_name}: "
    default_skipping_reason = skipping_reason_prefix + "not found in the config."
    if test_configuration is None:
        if test_mode_can_skip_this_test:
            return TestAction.SKIP, default_skipping_reason
        else:
            return (
                TestAction.FAIL,
                f"{test_name} failed: it was not configured but must be according to the current {global_test_mode} test strictness level.",
            )
    else:
        if test_configuration.tests is not None:
            return TestAction.PARAMETRIZE, f"Parametrize {test_name}: tests are configured."
        else:
            return TestAction.SKIP, skipping_reason_prefix + test_configuration.bypass_reason