diff --git a/docs/using_plugins.rst b/docs/using_plugins.rst
index 0f02be9..8dd2b4b 100644
--- a/docs/using_plugins.rst
+++ b/docs/using_plugins.rst
@@ -243,7 +243,7 @@ custom field subclasses a standard marshmallow `Field` class then it will
 inherit the default mapping. If you want to override the OpenAPI type and format
 for custom fields, use the
 `map_to_openapi_type <apispec.ext.marshmallow.MarshmallowPlugin.map_to_openapi_type>`
-decorator. It can be invoked with either a pair of strings providing the
+method. It can be invoked with either a pair of strings providing the
 OpenAPI type and format, or a marshmallow `Field` that has the desired target mapping.
 
 .. code-block:: python
@@ -258,21 +258,26 @@ OpenAPI type and format, or a marshmallow `Field` that has the desired target ma
         title="Demo", version="0.1", openapi_version="3.0.0", plugins=(ma_plugin,)
     )
 
-    # Inherits Integer mapping of ('integer', 'int32')
-    class MyCustomInteger(Integer):
+    # Inherits Integer mapping of ('integer', None)
+    class CustomInteger(Integer):
         pass
 
 
     # Override Integer mapping
-    @ma_plugin.map_to_openapi_type("string", "uuid")
-    class MyCustomField(Integer):
+    class Int32(Integer):
         pass
 
 
-    @ma_plugin.map_to_openapi_type(Integer)  # will map to ('integer', 'int32')
-    class MyCustomFieldThatsKindaLikeAnInteger(Field):
+    ma_plugin.map_to_openapi_type(Int32, "string", "int32")
+
+
+    # Map to ('integer', None) like Integer
+    class IntegerLike(Field):
         pass
 
+
+    ma_plugin.map_to_openapi_type(IntegerLike, Integer)
+
 In situations where greater control of the properties generated for a custom field
 is desired, users may add custom logic to the conversion of fields to OpenAPI properties
 through the use of the `add_attribute_function
diff --git a/src/apispec/ext/marshmallow/__init__.py b/src/apispec/ext/marshmallow/__init__.py
index c08cb87..2595581 100644
--- a/src/apispec/ext/marshmallow/__init__.py
+++ b/src/apispec/ext/marshmallow/__init__.py
@@ -137,8 +137,10 @@ class MarshmallowPlugin(BasePlugin):
             openapi_version=spec.openapi_version, converter=self.converter
         )
 
-    def map_to_openapi_type(self, *args):
-        """Decorator to set mapping for custom fields.
+    def map_to_openapi_type(self, field_cls, *args):
+        """Set mapping for custom field class.
+
+        :param type field_cls: Field class to set mapping for.
 
         ``*args`` can be:
 
@@ -147,15 +149,19 @@ class MarshmallowPlugin(BasePlugin):
 
         Examples: ::
 
-            @ma_plugin.map_to_openapi_type('string', 'uuid')
-            class MyCustomField(Integer):
+            # Override Integer mapping
+            class Int32(Integer):
                 # ...
 
-            @ma_plugin.map_to_openapi_type(Integer)  # will map to ('integer', None)
-            class MyCustomFieldThatsKindaLikeAnInteger(Integer):
+            ma_plugin.map_to_openapi_type(Int32, 'string', 'int32')
+
+            # Map to ('integer', None) like Integer
+            class IntegerLike(Integer):
                 # ...
+
+            ma_plugin.map_to_openapi_type(IntegerLike, Integer)
         """
-        return self.converter.map_to_openapi_type(*args)
+        return self.converter.map_to_openapi_type(field_cls, *args)
 
     def schema_helper(self, name, _, schema=None, **kwargs):
         """Definition helper that allows using a marshmallow
diff --git a/src/apispec/ext/marshmallow/field_converter.py b/src/apispec/ext/marshmallow/field_converter.py
index 2a5beaa..5c9abc5 100644
--- a/src/apispec/ext/marshmallow/field_converter.py
+++ b/src/apispec/ext/marshmallow/field_converter.py
@@ -113,8 +113,10 @@ class FieldConverterMixin:
             self.timedelta2properties,
         ]
 
-    def map_to_openapi_type(self, *args):
-        """Decorator to set mapping for custom fields.
+    def map_to_openapi_type(self, field_cls, *args):
+        """Set mapping for custom field class.
+
+        :param type field_cls: Field class to set mapping for.
 
         ``*args`` can be:
 
@@ -128,11 +130,7 @@ class FieldConverterMixin:
         else:
             raise TypeError("Pass core marshmallow field type or (type, fmt) pair.")
 
-        def inner(field_type):
-            self.field_mapping[field_type] = openapi_type_field
-            return field_type
-
-        return inner
+        self.field_mapping[field_cls] = openapi_type_field
 
     def add_attribute_function(self, func):
         """Method to add an attribute function to the list of attribute functions

diff --git a/tests/test_ext_marshmallow.py b/tests/test_ext_marshmallow.py
index 5e8a61c..07d83fa 100644
--- a/tests/test_ext_marshmallow.py
+++ b/tests/test_ext_marshmallow.py
@@ -314,19 +314,25 @@ class TestComponentHeaderHelper:
 
 class TestCustomField:
     def test_can_use_custom_field_decorator(self, spec_fixture):
-        @spec_fixture.marshmallow_plugin.map_to_openapi_type(DateTime)
         class CustomNameA(Field):
             pass
 
-        @spec_fixture.marshmallow_plugin.map_to_openapi_type("integer", "int32")
+        spec_fixture.marshmallow_plugin.map_to_openapi_type(CustomNameA, DateTime)
+
         class CustomNameB(Field):
             pass
 
-        with pytest.raises(TypeError):
+        spec_fixture.marshmallow_plugin.map_to_openapi_type(
+            CustomNameB, "integer", "int32"
+        )
 
-            @spec_fixture.marshmallow_plugin.map_to_openapi_type("integer")
-            class BadCustomField(Field):
-                pass
+        class BadCustomField(Field):
+            pass
+
+        with pytest.raises(TypeError):
+            spec_fixture.marshmallow_plugin.map_to_openapi_type(
+                BadCustomField, "integer"
+            )
 
         class CustomPetASchema(PetSchema):
             name = CustomNameA()
diff --git a/tests/test_ext_marshmallow_field.py b/tests/test_ext_marshmallow_field.py
index aab4304..dcba184 100644
--- a/tests/test_ext_marshmallow_field.py
+++ b/tests/test_ext_marshmallow_field.py
@@ -212,10 +212,11 @@ def test_field_with_range_string_type(spec_fixture, field):
 
 @pytest.mark.parametrize("spec_fixture", ("3.1.0",), indirect=True)
 def test_field_with_range_type_list_with_number(spec_fixture):
-    @spec_fixture.openapi.map_to_openapi_type(["integer", "null"], None)
     class NullableInteger(fields.Field):
         """Nullable integer"""
 
+    spec_fixture.openapi.map_to_openapi_type(NullableInteger, ["integer", "null"], None)
+
     field = NullableInteger(validate=validate.Range(min=1, max=10))
     res = spec_fixture.openapi.field2property(field)
     assert res["minimum"] == 1
@@ -225,10 +226,11 @@ def test_field_with_range_type_list_with_number(spec_fixture):
 
 @pytest.mark.parametrize("spec_fixture", ("3.1.0",), indirect=True)
 def test_field_with_range_type_list_without_number(spec_fixture):
-    @spec_fixture.openapi.map_to_openapi_type(["string", "null"], None)
     class NullableInteger(fields.Field):
         """Nullable integer"""
 
+    spec_fixture.openapi.map_to_openapi_type(NullableInteger, ["string", "null"], None)
+
     field = NullableInteger(validate=validate.Range(min=1, max=10))
     res = spec_fixture.openapi.field2property(field)
     assert res["x-minimum"] == 1

Allow map_to_openapi_type to be called like a function
Hi,

so I have a schema which uses a custom field. Currently you expect that we do the following:

```
ma = MarshmallowPlugin()

@ma.map_to_openapi_type(fields.Dict)
class Custom(field.Field): pass
```

However, it's not very nice if the fields are in separate files since you always need the `MarshmallowPlugin` instance. As a workaround, I figured out, that the decorator doesn't really change something in the class, therefore I can also write:
`ma.map_to_openapi_type(fields.Dict)(Custom)`. However, still not very nice syntax.

Therefore I would like to propose a new function which just takes the two args: `ma.map_to_openapi_type2(Custom, fileds,Dict)` (name can be improved 😄 ). This can then be called whereever the `MarshmallowPlugin` is created. 
What do you think?
tests/test_ext_marshmallow.py::TestCustomField::test_can_use_custom_field_decorator[2.0] tests/test_ext_marshmallow.py::TestCustomField::test_can_use_custom_field_decorator[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_range_type_list_with_number[3.1.0] tests/test_ext_marshmallow_field.py::test_field_with_range_type_list_without_number[3.1.0]
tests/test_ext_marshmallow.py::TestDefinitionHelper::test_can_use_schema_as_definition[2.0-PetSchema] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_can_use_schema_as_definition[2.0-schema1] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_can_use_schema_as_definition[3.0.0-PetSchema] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_can_use_schema_as_definition[3.0.0-schema1] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_schema_helper_without_schema[2.0] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_schema_helper_without_schema[3.0.0] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_resolve_schema_dict_auto_reference[AnalysisSchema] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_resolve_schema_dict_auto_reference[schema1] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_resolve_schema_dict_auto_reference_in_list[AnalysisWithListSchema] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_resolve_schema_dict_auto_reference_in_list[schema1] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_resolve_schema_dict_auto_reference_return_none[AnalysisSchema] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_resolve_schema_dict_auto_reference_return_none[schema1] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_warning_when_schema_added_twice[2.0-AnalysisSchema] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_warning_when_schema_added_twice[2.0-schema1] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_warning_when_schema_added_twice[3.0.0-AnalysisSchema] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_warning_when_schema_added_twice[3.0.0-schema1] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_schema_instances_with_different_modifiers_added[2.0] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_schema_instances_with_different_modifiers_added[3.0.0] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_schema_with_clashing_names[2.0] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_schema_with_clashing_names[3.0.0] tests/test_ext_marshmallow.py::TestDefinitionHelper::test_resolve_nested_schema_many_true_resolver_return_none tests/test_ext_marshmallow.py::TestComponentParameterHelper::test_can_use_schema_in_parameter[2.0-PetSchema] tests/test_ext_marshmallow.py::TestComponentParameterHelper::test_can_use_schema_in_parameter[2.0-schema1] tests/test_ext_marshmallow.py::TestComponentParameterHelper::test_can_use_schema_in_parameter[3.0.0-PetSchema] tests/test_ext_marshmallow.py::TestComponentParameterHelper::test_can_use_schema_in_parameter[3.0.0-schema1] tests/test_ext_marshmallow.py::TestComponentParameterHelper::test_can_use_schema_in_parameter_with_content[PetSchema-3.0.0] tests/test_ext_marshmallow.py::TestComponentParameterHelper::test_can_use_schema_in_parameter_with_content[schema1-3.0.0] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response[2.0-PetSchema] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response[2.0-schema1] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response[3.0.0-PetSchema] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response[3.0.0-schema1] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response_header[2.0-PetSchema] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response_header[2.0-schema1] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response_header[3.0.0-PetSchema] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_can_use_schema_in_response_header[3.0.0-schema1] tests/test_ext_marshmallow.py::TestComponentResponseHelper::test_content_without_schema[3.0.0] tests/test_ext_marshmallow.py::TestComponentHeaderHelper::test_can_use_schema_in_header[PetSchema-3.0.0] tests/test_ext_marshmallow.py::TestComponentHeaderHelper::test_can_use_schema_in_header[schema1-3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v2[2.0-PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v2[2.0-pet_schema1] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v2[2.0-pet_schema2] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v2[2.0-tests.schemas.PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v3[3.0.0-PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v3[3.0.0-pet_schema1] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v3[3.0.0-pet_schema2] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_v3[3.0.0-tests.schemas.PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_v3[3.0.0-PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_v3[3.0.0-pet_schema1] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_v3[3.0.0-pet_schema2] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_v3[3.0.0-tests.schemas.PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_expand_parameters_v2[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_expand_parameters_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_expand_parameters_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_uses_ref_if_available_v2[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_uses_ref_if_available_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_uses_ref_if_available_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_uses_ref_if_available_name_resolver_returns_none_v2 tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_uses_ref_if_available_name_resolver_returns_none_v3 tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_resolver_allof_v2[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_resolver_oneof_anyof_allof_v3[oneOf-3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_resolver_oneof_anyof_allof_v3[anyOf-3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_resolver_oneof_anyof_allof_v3[allOf-3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_resolver_not_v2[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_resolver_not_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_name_resolver_returns_none_v2[PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_name_resolver_returns_none_v2[pet_schema1] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_name_resolver_returns_none_v2[tests.schemas.PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_name_resolver_returns_none_v3[PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_name_resolver_returns_none_v3[pet_schema1] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_name_resolver_returns_none_v3[tests.schemas.PetSchema] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_uses_ref_if_available_name_resolver_returns_none_v3 tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_uses_ref_in_parameters_and_request_body_if_available_v2[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_uses_ref_in_parameters_and_request_body_if_available_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_uses_ref_in_parameters_and_request_body_if_available_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_array_uses_ref_if_available_v2[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_array_uses_ref_if_available_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_array_uses_ref_if_available_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_partially_v2[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_partially_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_callback_schema_partially_v3[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_parameter_reference[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_parameter_reference[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_response_reference[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_response_reference[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_global_state_untouched_2json[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_global_state_untouched_2json[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_global_state_untouched_2parameters[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_schema_global_state_untouched_2parameters[3.0.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_resolve_schema_dict_ref_as_string[2.0] tests/test_ext_marshmallow.py::TestOperationHelper::test_resolve_schema_dict_ref_as_string[3.0.0] tests/test_ext_marshmallow.py::TestCircularReference::test_circular_referencing_schemas[2.0] tests/test_ext_marshmallow.py::TestCircularReference::test_circular_referencing_schemas[3.0.0] tests/test_ext_marshmallow.py::TestSelfReference::test_self_referencing_field_single[2.0] tests/test_ext_marshmallow.py::TestSelfReference::test_self_referencing_field_single[3.0.0] tests/test_ext_marshmallow.py::TestSelfReference::test_self_referencing_field_many[2.0] tests/test_ext_marshmallow.py::TestSelfReference::test_self_referencing_field_many[3.0.0] tests/test_ext_marshmallow.py::TestOrderedSchema::test_ordered_schema[2.0] tests/test_ext_marshmallow.py::TestOrderedSchema::test_ordered_schema[3.0.0] tests/test_ext_marshmallow.py::TestFieldWithCustomProps::test_field_with_custom_props[2.0] tests/test_ext_marshmallow.py::TestFieldWithCustomProps::test_field_with_custom_props[3.0.0] tests/test_ext_marshmallow.py::TestFieldWithCustomProps::test_field_with_custom_props_passed_as_snake_case[2.0] tests/test_ext_marshmallow.py::TestFieldWithCustomProps::test_field_with_custom_props_passed_as_snake_case[3.0.0] tests/test_ext_marshmallow.py::TestSchemaWithDefaultValues::test_schema_with_default_values[2.0] tests/test_ext_marshmallow.py::TestSchemaWithDefaultValues::test_schema_with_default_values[3.0.0] tests/test_ext_marshmallow.py::TestDictValues::test_dict_values_resolve_to_additional_properties[2.0] tests/test_ext_marshmallow.py::TestDictValues::test_dict_values_resolve_to_additional_properties[3.0.0] tests/test_ext_marshmallow.py::TestDictValues::test_dict_with_empty_values_field[2.0] tests/test_ext_marshmallow.py::TestDictValues::test_dict_with_empty_values_field[3.0.0] tests/test_ext_marshmallow.py::TestDictValues::test_dict_with_nested[2.0] tests/test_ext_marshmallow.py::TestDictValues::test_dict_with_nested[3.0.0] tests/test_ext_marshmallow.py::TestList::test_list_with_nested[2.0] tests/test_ext_marshmallow.py::TestList::test_list_with_nested[3.0.0] tests/test_ext_marshmallow.py::TestTimeDelta::test_timedelta_x_unit[2.0] tests/test_ext_marshmallow.py::TestTimeDelta::test_timedelta_x_unit[3.0.0] tests/test_ext_marshmallow_field.py::test_field2choices_preserving_order[2.0] tests/test_ext_marshmallow_field.py::test_field2choices_preserving_order[3.0.0] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Integer-integer] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Number-number] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Float-number] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-String-string0] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-String-string1] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Boolean-boolean0] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Boolean-boolean1] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-UUID-string] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-DateTime-string] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Date-string] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Time-string] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-TimeDelta-integer] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Email-string] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-Url-string] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-CustomStringField-string] tests/test_ext_marshmallow_field.py::test_field2property_type[2.0-CustomIntegerField-integer] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Integer-integer] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Number-number] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Float-number] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-String-string0] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-String-string1] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Boolean-boolean0] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Boolean-boolean1] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-UUID-string] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-DateTime-string] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Date-string] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Time-string] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-TimeDelta-integer] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Email-string] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-Url-string] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-CustomStringField-string] tests/test_ext_marshmallow_field.py::test_field2property_type[3.0.0-CustomIntegerField-integer] tests/test_ext_marshmallow_field.py::test_field2property_no_type_[2.0-Field] tests/test_ext_marshmallow_field.py::test_field2property_no_type_[2.0-Raw] tests/test_ext_marshmallow_field.py::test_field2property_no_type_[3.0.0-Field] tests/test_ext_marshmallow_field.py::test_field2property_no_type_[3.0.0-Raw] tests/test_ext_marshmallow_field.py::test_formatted_field_translates_to_array[2.0-List] tests/test_ext_marshmallow_field.py::test_formatted_field_translates_to_array[2.0-CustomList] tests/test_ext_marshmallow_field.py::test_formatted_field_translates_to_array[3.0.0-List] tests/test_ext_marshmallow_field.py::test_formatted_field_translates_to_array[3.0.0-CustomList] tests/test_ext_marshmallow_field.py::test_field2property_formats[2.0-UUID-uuid] tests/test_ext_marshmallow_field.py::test_field2property_formats[2.0-DateTime-date-time] tests/test_ext_marshmallow_field.py::test_field2property_formats[2.0-Date-date] tests/test_ext_marshmallow_field.py::test_field2property_formats[2.0-Email-email] tests/test_ext_marshmallow_field.py::test_field2property_formats[2.0-Url-url] tests/test_ext_marshmallow_field.py::test_field2property_formats[3.0.0-UUID-uuid] tests/test_ext_marshmallow_field.py::test_field2property_formats[3.0.0-DateTime-date-time] tests/test_ext_marshmallow_field.py::test_field2property_formats[3.0.0-Date-date] tests/test_ext_marshmallow_field.py::test_field2property_formats[3.0.0-Email-email] tests/test_ext_marshmallow_field.py::test_field2property_formats[3.0.0-Url-url] tests/test_ext_marshmallow_field.py::test_field_with_description[2.0] tests/test_ext_marshmallow_field.py::test_field_with_description[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_load_default[2.0] tests/test_ext_marshmallow_field.py::test_field_with_load_default[3.0.0] tests/test_ext_marshmallow_field.py::test_boolean_field_with_false_load_default[2.0] tests/test_ext_marshmallow_field.py::test_boolean_field_with_false_load_default[3.0.0] tests/test_ext_marshmallow_field.py::test_datetime_field_with_load_default[2.0] tests/test_ext_marshmallow_field.py::test_datetime_field_with_load_default[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_load_default_callable[2.0] tests/test_ext_marshmallow_field.py::test_field_with_load_default_callable[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_default[2.0] tests/test_ext_marshmallow_field.py::test_field_with_default[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_default_and_load_default[2.0] tests/test_ext_marshmallow_field.py::test_field_with_default_and_load_default[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_choices[2.0] tests/test_ext_marshmallow_field.py::test_field_with_choices[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_equal[2.0] tests/test_ext_marshmallow_field.py::test_field_with_equal[3.0.0] tests/test_ext_marshmallow_field.py::test_only_allows_valid_properties_in_metadata[2.0] tests/test_ext_marshmallow_field.py::test_only_allows_valid_properties_in_metadata[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_choices_multiple[2.0] tests/test_ext_marshmallow_field.py::test_field_with_choices_multiple[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_additional_metadata[2.0] tests/test_ext_marshmallow_field.py::test_field_with_additional_metadata[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_allow_none[2.0] tests/test_ext_marshmallow_field.py::test_field_with_allow_none[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_allow_none[3.1.0] tests/test_ext_marshmallow_field.py::test_field_with_dump_only[2.0] tests/test_ext_marshmallow_field.py::test_field_with_dump_only[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_load_only[2.0] tests/test_ext_marshmallow_field.py::test_field_with_load_only[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_load_only[3.1.0] tests/test_ext_marshmallow_field.py::test_field_with_range_no_type[2.0] tests/test_ext_marshmallow_field.py::test_field_with_range_no_type[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_range_string_type[2.0-Number] tests/test_ext_marshmallow_field.py::test_field_with_range_string_type[2.0-Integer] tests/test_ext_marshmallow_field.py::test_field_with_range_string_type[3.0.0-Number] tests/test_ext_marshmallow_field.py::test_field_with_range_string_type[3.0.0-Integer] tests/test_ext_marshmallow_field.py::test_field_with_str_regex[2.0] tests/test_ext_marshmallow_field.py::test_field_with_str_regex[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_pattern_obj_regex[2.0] tests/test_ext_marshmallow_field.py::test_field_with_pattern_obj_regex[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_no_pattern[2.0] tests/test_ext_marshmallow_field.py::test_field_with_no_pattern[3.0.0] tests/test_ext_marshmallow_field.py::test_field_with_multiple_patterns[2.0] tests/test_ext_marshmallow_field.py::test_field_with_multiple_patterns[3.0.0] tests/test_ext_marshmallow_field.py::test_enum_symbol_field[2.0] tests/test_ext_marshmallow_field.py::test_enum_symbol_field[3.0.0] tests/test_ext_marshmallow_field.py::test_enum_value_field[2.0-Integer] tests/test_ext_marshmallow_field.py::test_enum_value_field[2.0-True] tests/test_ext_marshmallow_field.py::test_enum_value_field[3.0.0-Integer] tests/test_ext_marshmallow_field.py::test_enum_value_field[3.0.0-True] tests/test_ext_marshmallow_field.py::test_field2property_nested_spec_metadatas[2.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_spec_metadatas[3.0.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_spec[2.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_spec[3.0.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_many_spec[2.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_many_spec[3.0.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_ref[2.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_ref[3.0.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_many[2.0] tests/test_ext_marshmallow_field.py::test_field2property_nested_many[3.0.0] tests/test_ext_marshmallow_field.py::test_nested_field_with_property[2.0] tests/test_ext_marshmallow_field.py::test_nested_field_with_property[3.0.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_spec[2.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_spec[3.0.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_with_property[2.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_with_property[3.0.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_metadata[2.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_metadata[3.0.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_many[2.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_many[3.0.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_many_with_property[2.0] tests/test_ext_marshmallow_field.py::TestField2PropertyPluck::test_many_with_property[3.0.0] tests/test_ext_marshmallow_field.py::test_custom_properties_for_custom_fields[2.0] tests/test_ext_marshmallow_field.py::test_custom_properties_for_custom_fields[3.0.0] tests/test_ext_marshmallow_field.py::test_field2property_with_non_string_metadata_keys[2.0] tests/test_ext_marshmallow_field.py::test_field2property_with_non_string_metadata_keys[3.0.0]