Tests: prerequisites check improved by using callable.

This is required for more flexible Python version check since ASGI works
for Python 3.5+.  Version check via 'startswith()' function removed as
not consistent.
This commit is contained in:
Max Romanov
2020-09-24 09:47:27 +03:00
parent 1fc51cf140
commit efe65dee4d

View File

@@ -67,31 +67,39 @@ def pytest_generate_tests(metafunc):
type = cls.application_type type = cls.application_type
# take available module from option and generate tests for each version def generate_tests(versions):
for module in cls.prerequisites['modules']:
if module in option.available['modules']:
prereq_version = cls.prerequisites['modules'][module]
available_versions = option.available['modules'][module]
if prereq_version == 'all':
metafunc.fixturenames.append('tmp_ct') metafunc.fixturenames.append('tmp_ct')
metafunc.parametrize('tmp_ct', range(len(available_versions))) metafunc.parametrize('tmp_ct', range(len(versions)))
for i in range(len(available_versions)): for i, version in enumerate(versions):
version = available_versions[i]
option.generated_tests[ option.generated_tests[
metafunc.function.__name__ + '[{}]'.format(i) metafunc.function.__name__ + '[{}]'.format(i)
] = (type + ' ' + version) ] = (type + ' ' + version)
# take available module from option and generate tests for each version
for module, prereq_version in cls.prerequisites['modules'].items():
if module in option.available['modules']:
available_versions = option.available['modules'][module]
if prereq_version == 'all':
generate_tests(available_versions)
elif prereq_version == 'any': elif prereq_version == 'any':
option.generated_tests[metafunc.function.__name__] = ( option.generated_tests[metafunc.function.__name__] = (
type + ' ' + available_versions[0] type + ' ' + available_versions[0]
) )
elif callable(prereq_version):
generate_tests(
list(filter(prereq_version, available_versions))
)
else: else:
for version in available_versions: raise ValueError(
if version.startswith(prereq_version): """
option.generated_tests[metafunc.function.__name__] = ( Unexpected prerequisite version "%s" for module "%s" in %s.
type + ' ' + version 'all', 'any' or callable expected."""
% (str(prereq_version), module, str(cls))
) )