schemathesis 3.13.0__py3-none-any.whl → 4.4.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. schemathesis/__init__.py +53 -25
  2. schemathesis/auths.py +507 -0
  3. schemathesis/checks.py +190 -25
  4. schemathesis/cli/__init__.py +27 -1016
  5. schemathesis/cli/__main__.py +4 -0
  6. schemathesis/cli/commands/__init__.py +133 -0
  7. schemathesis/cli/commands/data.py +10 -0
  8. schemathesis/cli/commands/run/__init__.py +602 -0
  9. schemathesis/cli/commands/run/context.py +228 -0
  10. schemathesis/cli/commands/run/events.py +60 -0
  11. schemathesis/cli/commands/run/executor.py +157 -0
  12. schemathesis/cli/commands/run/filters.py +53 -0
  13. schemathesis/cli/commands/run/handlers/__init__.py +46 -0
  14. schemathesis/cli/commands/run/handlers/base.py +45 -0
  15. schemathesis/cli/commands/run/handlers/cassettes.py +464 -0
  16. schemathesis/cli/commands/run/handlers/junitxml.py +60 -0
  17. schemathesis/cli/commands/run/handlers/output.py +1750 -0
  18. schemathesis/cli/commands/run/loaders.py +118 -0
  19. schemathesis/cli/commands/run/validation.py +256 -0
  20. schemathesis/cli/constants.py +5 -0
  21. schemathesis/cli/core.py +19 -0
  22. schemathesis/cli/ext/fs.py +16 -0
  23. schemathesis/cli/ext/groups.py +203 -0
  24. schemathesis/cli/ext/options.py +81 -0
  25. schemathesis/config/__init__.py +202 -0
  26. schemathesis/config/_auth.py +51 -0
  27. schemathesis/config/_checks.py +268 -0
  28. schemathesis/config/_diff_base.py +101 -0
  29. schemathesis/config/_env.py +21 -0
  30. schemathesis/config/_error.py +163 -0
  31. schemathesis/config/_generation.py +157 -0
  32. schemathesis/config/_health_check.py +24 -0
  33. schemathesis/config/_operations.py +335 -0
  34. schemathesis/config/_output.py +171 -0
  35. schemathesis/config/_parameters.py +19 -0
  36. schemathesis/config/_phases.py +253 -0
  37. schemathesis/config/_projects.py +543 -0
  38. schemathesis/config/_rate_limit.py +17 -0
  39. schemathesis/config/_report.py +120 -0
  40. schemathesis/config/_validator.py +9 -0
  41. schemathesis/config/_warnings.py +89 -0
  42. schemathesis/config/schema.json +975 -0
  43. schemathesis/core/__init__.py +72 -0
  44. schemathesis/core/adapter.py +34 -0
  45. schemathesis/core/compat.py +32 -0
  46. schemathesis/core/control.py +2 -0
  47. schemathesis/core/curl.py +100 -0
  48. schemathesis/core/deserialization.py +210 -0
  49. schemathesis/core/errors.py +588 -0
  50. schemathesis/core/failures.py +316 -0
  51. schemathesis/core/fs.py +19 -0
  52. schemathesis/core/hooks.py +20 -0
  53. schemathesis/core/jsonschema/__init__.py +13 -0
  54. schemathesis/core/jsonschema/bundler.py +183 -0
  55. schemathesis/core/jsonschema/keywords.py +40 -0
  56. schemathesis/core/jsonschema/references.py +222 -0
  57. schemathesis/core/jsonschema/types.py +41 -0
  58. schemathesis/core/lazy_import.py +15 -0
  59. schemathesis/core/loaders.py +107 -0
  60. schemathesis/core/marks.py +66 -0
  61. schemathesis/core/media_types.py +79 -0
  62. schemathesis/core/output/__init__.py +46 -0
  63. schemathesis/core/output/sanitization.py +54 -0
  64. schemathesis/core/parameters.py +45 -0
  65. schemathesis/core/rate_limit.py +60 -0
  66. schemathesis/core/registries.py +34 -0
  67. schemathesis/core/result.py +27 -0
  68. schemathesis/core/schema_analysis.py +17 -0
  69. schemathesis/core/shell.py +203 -0
  70. schemathesis/core/transforms.py +144 -0
  71. schemathesis/core/transport.py +223 -0
  72. schemathesis/core/validation.py +73 -0
  73. schemathesis/core/version.py +7 -0
  74. schemathesis/engine/__init__.py +28 -0
  75. schemathesis/engine/context.py +152 -0
  76. schemathesis/engine/control.py +44 -0
  77. schemathesis/engine/core.py +201 -0
  78. schemathesis/engine/errors.py +446 -0
  79. schemathesis/engine/events.py +284 -0
  80. schemathesis/engine/observations.py +42 -0
  81. schemathesis/engine/phases/__init__.py +108 -0
  82. schemathesis/engine/phases/analysis.py +28 -0
  83. schemathesis/engine/phases/probes.py +172 -0
  84. schemathesis/engine/phases/stateful/__init__.py +68 -0
  85. schemathesis/engine/phases/stateful/_executor.py +364 -0
  86. schemathesis/engine/phases/stateful/context.py +85 -0
  87. schemathesis/engine/phases/unit/__init__.py +220 -0
  88. schemathesis/engine/phases/unit/_executor.py +459 -0
  89. schemathesis/engine/phases/unit/_pool.py +82 -0
  90. schemathesis/engine/recorder.py +254 -0
  91. schemathesis/errors.py +47 -0
  92. schemathesis/filters.py +395 -0
  93. schemathesis/generation/__init__.py +25 -0
  94. schemathesis/generation/case.py +478 -0
  95. schemathesis/generation/coverage.py +1528 -0
  96. schemathesis/generation/hypothesis/__init__.py +121 -0
  97. schemathesis/generation/hypothesis/builder.py +992 -0
  98. schemathesis/generation/hypothesis/examples.py +56 -0
  99. schemathesis/generation/hypothesis/given.py +66 -0
  100. schemathesis/generation/hypothesis/reporting.py +285 -0
  101. schemathesis/generation/meta.py +227 -0
  102. schemathesis/generation/metrics.py +93 -0
  103. schemathesis/generation/modes.py +20 -0
  104. schemathesis/generation/overrides.py +127 -0
  105. schemathesis/generation/stateful/__init__.py +37 -0
  106. schemathesis/generation/stateful/state_machine.py +294 -0
  107. schemathesis/graphql/__init__.py +15 -0
  108. schemathesis/graphql/checks.py +109 -0
  109. schemathesis/graphql/loaders.py +285 -0
  110. schemathesis/hooks.py +270 -91
  111. schemathesis/openapi/__init__.py +13 -0
  112. schemathesis/openapi/checks.py +467 -0
  113. schemathesis/openapi/generation/__init__.py +0 -0
  114. schemathesis/openapi/generation/filters.py +72 -0
  115. schemathesis/openapi/loaders.py +315 -0
  116. schemathesis/pytest/__init__.py +5 -0
  117. schemathesis/pytest/control_flow.py +7 -0
  118. schemathesis/pytest/lazy.py +341 -0
  119. schemathesis/pytest/loaders.py +36 -0
  120. schemathesis/pytest/plugin.py +357 -0
  121. schemathesis/python/__init__.py +0 -0
  122. schemathesis/python/asgi.py +12 -0
  123. schemathesis/python/wsgi.py +12 -0
  124. schemathesis/schemas.py +683 -247
  125. schemathesis/specs/graphql/__init__.py +0 -1
  126. schemathesis/specs/graphql/nodes.py +27 -0
  127. schemathesis/specs/graphql/scalars.py +86 -0
  128. schemathesis/specs/graphql/schemas.py +395 -123
  129. schemathesis/specs/graphql/validation.py +33 -0
  130. schemathesis/specs/openapi/__init__.py +9 -1
  131. schemathesis/specs/openapi/_hypothesis.py +578 -317
  132. schemathesis/specs/openapi/adapter/__init__.py +10 -0
  133. schemathesis/specs/openapi/adapter/parameters.py +729 -0
  134. schemathesis/specs/openapi/adapter/protocol.py +59 -0
  135. schemathesis/specs/openapi/adapter/references.py +19 -0
  136. schemathesis/specs/openapi/adapter/responses.py +368 -0
  137. schemathesis/specs/openapi/adapter/security.py +144 -0
  138. schemathesis/specs/openapi/adapter/v2.py +30 -0
  139. schemathesis/specs/openapi/adapter/v3_0.py +30 -0
  140. schemathesis/specs/openapi/adapter/v3_1.py +30 -0
  141. schemathesis/specs/openapi/analysis.py +96 -0
  142. schemathesis/specs/openapi/checks.py +753 -74
  143. schemathesis/specs/openapi/converter.py +176 -37
  144. schemathesis/specs/openapi/definitions.py +599 -4
  145. schemathesis/specs/openapi/examples.py +581 -165
  146. schemathesis/specs/openapi/expressions/__init__.py +52 -5
  147. schemathesis/specs/openapi/expressions/extractors.py +25 -0
  148. schemathesis/specs/openapi/expressions/lexer.py +34 -31
  149. schemathesis/specs/openapi/expressions/nodes.py +97 -46
  150. schemathesis/specs/openapi/expressions/parser.py +35 -13
  151. schemathesis/specs/openapi/formats.py +122 -0
  152. schemathesis/specs/openapi/media_types.py +75 -0
  153. schemathesis/specs/openapi/negative/__init__.py +117 -68
  154. schemathesis/specs/openapi/negative/mutations.py +294 -104
  155. schemathesis/specs/openapi/negative/utils.py +3 -6
  156. schemathesis/specs/openapi/patterns.py +458 -0
  157. schemathesis/specs/openapi/references.py +60 -81
  158. schemathesis/specs/openapi/schemas.py +648 -650
  159. schemathesis/specs/openapi/serialization.py +53 -30
  160. schemathesis/specs/openapi/stateful/__init__.py +404 -69
  161. schemathesis/specs/openapi/stateful/control.py +87 -0
  162. schemathesis/specs/openapi/stateful/dependencies/__init__.py +232 -0
  163. schemathesis/specs/openapi/stateful/dependencies/inputs.py +428 -0
  164. schemathesis/specs/openapi/stateful/dependencies/models.py +341 -0
  165. schemathesis/specs/openapi/stateful/dependencies/naming.py +491 -0
  166. schemathesis/specs/openapi/stateful/dependencies/outputs.py +34 -0
  167. schemathesis/specs/openapi/stateful/dependencies/resources.py +339 -0
  168. schemathesis/specs/openapi/stateful/dependencies/schemas.py +447 -0
  169. schemathesis/specs/openapi/stateful/inference.py +254 -0
  170. schemathesis/specs/openapi/stateful/links.py +219 -78
  171. schemathesis/specs/openapi/types/__init__.py +3 -0
  172. schemathesis/specs/openapi/types/common.py +23 -0
  173. schemathesis/specs/openapi/types/v2.py +129 -0
  174. schemathesis/specs/openapi/types/v3.py +134 -0
  175. schemathesis/specs/openapi/utils.py +7 -6
  176. schemathesis/specs/openapi/warnings.py +75 -0
  177. schemathesis/transport/__init__.py +224 -0
  178. schemathesis/transport/asgi.py +26 -0
  179. schemathesis/transport/prepare.py +126 -0
  180. schemathesis/transport/requests.py +278 -0
  181. schemathesis/transport/serialization.py +329 -0
  182. schemathesis/transport/wsgi.py +175 -0
  183. schemathesis-4.4.2.dist-info/METADATA +213 -0
  184. schemathesis-4.4.2.dist-info/RECORD +192 -0
  185. {schemathesis-3.13.0.dist-info → schemathesis-4.4.2.dist-info}/WHEEL +1 -1
  186. schemathesis-4.4.2.dist-info/entry_points.txt +6 -0
  187. {schemathesis-3.13.0.dist-info → schemathesis-4.4.2.dist-info/licenses}/LICENSE +1 -1
  188. schemathesis/_compat.py +0 -41
  189. schemathesis/_hypothesis.py +0 -115
  190. schemathesis/cli/callbacks.py +0 -188
  191. schemathesis/cli/cassettes.py +0 -253
  192. schemathesis/cli/context.py +0 -36
  193. schemathesis/cli/debug.py +0 -21
  194. schemathesis/cli/handlers.py +0 -11
  195. schemathesis/cli/junitxml.py +0 -41
  196. schemathesis/cli/options.py +0 -51
  197. schemathesis/cli/output/__init__.py +0 -1
  198. schemathesis/cli/output/default.py +0 -508
  199. schemathesis/cli/output/short.py +0 -40
  200. schemathesis/constants.py +0 -79
  201. schemathesis/exceptions.py +0 -207
  202. schemathesis/extra/_aiohttp.py +0 -27
  203. schemathesis/extra/_flask.py +0 -10
  204. schemathesis/extra/_server.py +0 -16
  205. schemathesis/extra/pytest_plugin.py +0 -216
  206. schemathesis/failures.py +0 -131
  207. schemathesis/fixups/__init__.py +0 -29
  208. schemathesis/fixups/fast_api.py +0 -30
  209. schemathesis/lazy.py +0 -227
  210. schemathesis/models.py +0 -1041
  211. schemathesis/parameters.py +0 -88
  212. schemathesis/runner/__init__.py +0 -460
  213. schemathesis/runner/events.py +0 -240
  214. schemathesis/runner/impl/__init__.py +0 -3
  215. schemathesis/runner/impl/core.py +0 -755
  216. schemathesis/runner/impl/solo.py +0 -85
  217. schemathesis/runner/impl/threadpool.py +0 -367
  218. schemathesis/runner/serialization.py +0 -189
  219. schemathesis/serializers.py +0 -233
  220. schemathesis/service/__init__.py +0 -3
  221. schemathesis/service/client.py +0 -46
  222. schemathesis/service/constants.py +0 -12
  223. schemathesis/service/events.py +0 -39
  224. schemathesis/service/handler.py +0 -39
  225. schemathesis/service/models.py +0 -7
  226. schemathesis/service/serialization.py +0 -153
  227. schemathesis/service/worker.py +0 -40
  228. schemathesis/specs/graphql/loaders.py +0 -215
  229. schemathesis/specs/openapi/constants.py +0 -7
  230. schemathesis/specs/openapi/expressions/context.py +0 -12
  231. schemathesis/specs/openapi/expressions/pointers.py +0 -29
  232. schemathesis/specs/openapi/filters.py +0 -44
  233. schemathesis/specs/openapi/links.py +0 -302
  234. schemathesis/specs/openapi/loaders.py +0 -453
  235. schemathesis/specs/openapi/parameters.py +0 -413
  236. schemathesis/specs/openapi/security.py +0 -129
  237. schemathesis/specs/openapi/validation.py +0 -24
  238. schemathesis/stateful.py +0 -349
  239. schemathesis/targets.py +0 -32
  240. schemathesis/types.py +0 -38
  241. schemathesis/utils.py +0 -436
  242. schemathesis-3.13.0.dist-info/METADATA +0 -202
  243. schemathesis-3.13.0.dist-info/RECORD +0 -91
  244. schemathesis-3.13.0.dist-info/entry_points.txt +0 -6
  245. /schemathesis/{extra → cli/ext}/__init__.py +0 -0
schemathesis/lazy.py DELETED
@@ -1,227 +0,0 @@
1
- from inspect import signature
2
- from typing import Any, Callable, Dict, Optional, Union
3
-
4
- import attr
5
- import pytest
6
- from _pytest.fixtures import FixtureRequest
7
- from pytest_subtests import SubTests, nullcontext
8
-
9
- from .constants import CodeSampleStyle, DataGenerationMethod
10
- from .exceptions import InvalidSchema
11
- from .hooks import HookDispatcher, HookScope
12
- from .models import APIOperation
13
- from .schemas import BaseSchema
14
- from .types import DataGenerationMethodInput, Filter, GenericTest, NotSet
15
- from .utils import (
16
- NOT_SET,
17
- GivenInput,
18
- Ok,
19
- fail_on_no_matches,
20
- get_given_args,
21
- get_given_kwargs,
22
- given_proxy,
23
- is_given_applied,
24
- merge_given_args,
25
- validate_given_args,
26
- )
27
-
28
-
29
- @attr.s(slots=True) # pragma: no mutate
30
- class LazySchema:
31
- fixture_name: str = attr.ib() # pragma: no mutate
32
- base_url: Union[Optional[str], NotSet] = attr.ib(default=NOT_SET) # pragma: no mutate
33
- method: Optional[Filter] = attr.ib(default=NOT_SET) # pragma: no mutate
34
- endpoint: Optional[Filter] = attr.ib(default=NOT_SET) # pragma: no mutate
35
- tag: Optional[Filter] = attr.ib(default=NOT_SET) # pragma: no mutate
36
- operation_id: Optional[Filter] = attr.ib(default=NOT_SET) # pragma: no mutate
37
- app: Any = attr.ib(default=NOT_SET) # pragma: no mutate
38
- hooks: HookDispatcher = attr.ib(factory=lambda: HookDispatcher(scope=HookScope.SCHEMA)) # pragma: no mutate
39
- validate_schema: bool = attr.ib(default=True) # pragma: no mutate
40
- skip_deprecated_operations: bool = attr.ib(default=False) # pragma: no mutate
41
- data_generation_methods: Union[DataGenerationMethodInput, NotSet] = attr.ib(default=NOT_SET)
42
- code_sample_style: CodeSampleStyle = attr.ib(default=CodeSampleStyle.default()) # pragma: no mutate
43
-
44
- def parametrize(
45
- self,
46
- method: Optional[Filter] = NOT_SET,
47
- endpoint: Optional[Filter] = NOT_SET,
48
- tag: Optional[Filter] = NOT_SET,
49
- operation_id: Optional[Filter] = NOT_SET,
50
- validate_schema: Union[bool, NotSet] = NOT_SET,
51
- skip_deprecated_operations: Union[bool, NotSet] = NOT_SET,
52
- data_generation_methods: Union[DataGenerationMethodInput, NotSet] = NOT_SET,
53
- code_sample_style: Union[str, NotSet] = NOT_SET,
54
- ) -> Callable:
55
- if method is NOT_SET:
56
- method = self.method
57
- if endpoint is NOT_SET:
58
- endpoint = self.endpoint
59
- if tag is NOT_SET:
60
- tag = self.tag
61
- if operation_id is NOT_SET:
62
- operation_id = self.operation_id
63
- if data_generation_methods is NOT_SET:
64
- data_generation_methods = self.data_generation_methods
65
- if isinstance(code_sample_style, str):
66
- _code_sample_style = CodeSampleStyle.from_str(code_sample_style)
67
- else:
68
- _code_sample_style = self.code_sample_style
69
-
70
- def wrapper(func: Callable) -> Callable:
71
- if is_given_applied(func):
72
- # The user wrapped the test function with `@schema.given`
73
- # These args & kwargs go as extra to the underlying test generator
74
- given_args = get_given_args(func)
75
- given_kwargs = get_given_kwargs(func)
76
- test_function = validate_given_args(func, given_args, given_kwargs)
77
- if test_function is not None:
78
- return test_function
79
- given_kwargs = merge_given_args(func, given_args, given_kwargs)
80
- del given_args
81
- else:
82
- given_kwargs = {}
83
-
84
- def test(request: FixtureRequest) -> None:
85
- """The actual test, which is executed by pytest."""
86
- __tracebackhide__ = True # pylint: disable=unused-variable
87
- if hasattr(test, "_schemathesis_hooks"):
88
- func._schemathesis_hooks = test._schemathesis_hooks # type: ignore
89
- schema = get_schema(
90
- request=request,
91
- name=self.fixture_name,
92
- base_url=self.base_url,
93
- method=method,
94
- endpoint=endpoint,
95
- tag=tag,
96
- operation_id=operation_id,
97
- hooks=self.hooks,
98
- test_function=func,
99
- validate_schema=validate_schema,
100
- skip_deprecated_operations=skip_deprecated_operations,
101
- data_generation_methods=data_generation_methods,
102
- code_sample_style=_code_sample_style,
103
- app=self.app,
104
- )
105
- fixtures = get_fixtures(func, request, given_kwargs)
106
- # Changing the node id is required for better reporting - the method and path will appear there
107
- node_id = request.node._nodeid
108
- settings = getattr(test, "_hypothesis_internal_use_settings", None)
109
- tests = list(schema.get_all_tests(func, settings, _given_kwargs=given_kwargs))
110
- if not tests:
111
- fail_on_no_matches(node_id)
112
- request.session.testscollected += len(tests)
113
- capmam = request.node.config.pluginmanager.get_plugin("capturemanager")
114
- if capmam is not None:
115
- suspend_capture_ctx = capmam.global_and_fixture_disabled
116
- else:
117
- suspend_capture_ctx = nullcontext
118
- subtests = SubTests(request.node.ihook, suspend_capture_ctx, request)
119
- for result, data_generation_method in tests:
120
- if isinstance(result, Ok):
121
- operation, sub_test = result.ok()
122
- subtests.item._nodeid = _get_node_name(node_id, operation, data_generation_method)
123
- run_subtest(operation, data_generation_method, fixtures, sub_test, subtests)
124
- else:
125
- _schema_error(subtests, result.err(), node_id, data_generation_method)
126
- subtests.item._nodeid = node_id
127
-
128
- test = pytest.mark.usefixtures(self.fixture_name)(test)
129
-
130
- # Needed to prevent a failure when settings are applied to the test function
131
- test.is_hypothesis_test = True # type: ignore
132
-
133
- return test
134
-
135
- return wrapper
136
-
137
- def given(self, *args: GivenInput, **kwargs: GivenInput) -> Callable:
138
- return given_proxy(*args, **kwargs)
139
-
140
-
141
- def _get_node_name(node_id: str, operation: APIOperation, data_generation_method: DataGenerationMethod) -> str:
142
- """Make a test node name. For example: test_api[GET /users]."""
143
- return f"{node_id}[{operation.method.upper()} {operation.full_path}][{data_generation_method.as_short_name()}]"
144
-
145
-
146
- def _get_partial_node_name(node_id: str, data_generation_method: DataGenerationMethod, **kwargs: Any) -> str:
147
- """Make a test node name for failing tests caused by schema errors."""
148
- name = node_id
149
- if "method" in kwargs:
150
- name += f"[{kwargs['method']} {kwargs['path']}]"
151
- else:
152
- name += f"[{kwargs['path']}]"
153
- name += f"[{data_generation_method.as_short_name()}]"
154
- return name
155
-
156
-
157
- def run_subtest(
158
- operation: APIOperation,
159
- data_generation_method: DataGenerationMethod,
160
- fixtures: Dict[str, Any],
161
- sub_test: Callable,
162
- subtests: SubTests,
163
- ) -> None:
164
- """Run the given subtest with pytest fixtures."""
165
- with subtests.test(
166
- verbose_name=operation.verbose_name, data_generation_method=data_generation_method.as_short_name()
167
- ):
168
- sub_test(**fixtures)
169
-
170
-
171
- def _schema_error(
172
- subtests: SubTests, error: InvalidSchema, node_id: str, data_generation_method: DataGenerationMethod
173
- ) -> None:
174
- """Run a failing test, that will show the underlying problem."""
175
- sub_test = error.as_failing_test_function()
176
- # `full_path` is always available in this case
177
- kwargs = {"path": error.full_path}
178
- if error.method:
179
- kwargs["method"] = error.method.upper()
180
- subtests.item._nodeid = _get_partial_node_name(node_id, data_generation_method, **kwargs)
181
- with subtests.test(**kwargs):
182
- sub_test()
183
-
184
-
185
- def get_schema(
186
- *,
187
- request: FixtureRequest,
188
- name: str,
189
- base_url: Union[Optional[str], NotSet] = None,
190
- method: Optional[Filter] = None,
191
- endpoint: Optional[Filter] = None,
192
- tag: Optional[Filter] = None,
193
- operation_id: Optional[Filter] = None,
194
- app: Any = None,
195
- test_function: GenericTest,
196
- hooks: HookDispatcher,
197
- validate_schema: Union[bool, NotSet] = NOT_SET,
198
- skip_deprecated_operations: Union[bool, NotSet] = NOT_SET,
199
- data_generation_methods: Union[DataGenerationMethodInput, NotSet] = NOT_SET,
200
- code_sample_style: CodeSampleStyle,
201
- ) -> BaseSchema:
202
- """Loads a schema from the fixture."""
203
- schema = request.getfixturevalue(name)
204
- if not isinstance(schema, BaseSchema):
205
- raise ValueError(f"The given schema must be an instance of BaseSchema, got: {type(schema)}")
206
- return schema.clone(
207
- base_url=base_url,
208
- method=method,
209
- endpoint=endpoint,
210
- tag=tag,
211
- operation_id=operation_id,
212
- app=app,
213
- test_function=test_function,
214
- hooks=schema.hooks.merge(hooks),
215
- validate_schema=validate_schema,
216
- skip_deprecated_operations=skip_deprecated_operations,
217
- data_generation_methods=data_generation_methods,
218
- code_sample_style=code_sample_style,
219
- )
220
-
221
-
222
- def get_fixtures(func: Callable, request: FixtureRequest, given_kwargs: Dict[str, Any]) -> Dict[str, Any]:
223
- """Load fixtures, needed for the test function."""
224
- sig = signature(func)
225
- return {
226
- name: request.getfixturevalue(name) for name in sig.parameters if name != "case" and name not in given_kwargs
227
- }