Check if all argnames are being used, by default values, or directly/indirectly. :param List[str] argnames: List of argument names passed to ``parametrize()``. :param indirect: Same as the ``indirect`` parameter of ``parametrize()``. :raises ValueError: If validation fails.
(
self,
argnames: Sequence[str],
indirect: Union[bool, Sequence[str]],
)
| 1283 | return valtypes |
| 1284 | |
| 1285 | def _validate_if_using_arg_names( |
| 1286 | self, |
| 1287 | argnames: Sequence[str], |
| 1288 | indirect: Union[bool, Sequence[str]], |
| 1289 | ) -> None: |
| 1290 | """Check if all argnames are being used, by default values, or directly/indirectly. |
| 1291 | |
| 1292 | :param List[str] argnames: List of argument names passed to ``parametrize()``. |
| 1293 | :param indirect: Same as the ``indirect`` parameter of ``parametrize()``. |
| 1294 | :raises ValueError: If validation fails. |
| 1295 | """ |
| 1296 | default_arg_names = set(get_default_arg_names(self.function)) |
| 1297 | func_name = self.function.__name__ |
| 1298 | for arg in argnames: |
| 1299 | if arg not in self.fixturenames: |
| 1300 | if arg in default_arg_names: |
| 1301 | fail( |
| 1302 | "In {}: function already takes an argument '{}' with a default value".format( |
| 1303 | func_name, arg |
| 1304 | ), |
| 1305 | pytrace=False, |
| 1306 | ) |
| 1307 | else: |
| 1308 | if isinstance(indirect, Sequence): |
| 1309 | name = "fixture" if arg in indirect else "argument" |
| 1310 | else: |
| 1311 | name = "fixture" if indirect else "argument" |
| 1312 | fail( |
| 1313 | f"In {func_name}: function uses no {name} '{arg}'", |
| 1314 | pytrace=False, |
| 1315 | ) |
| 1316 | |
| 1317 | |
| 1318 | def _find_parametrized_scope( |
no test coverage detected