Skip to content

Unify the way how unit tests are conditionally skipped #752

@plamut

Description

@plamut

Following the comment, we currently use two different ways of conditionally skipping unit tests that require particular minimum dependency version.

One approach parses the installed version manually:

PANDAS_MINIUM_VERSION = pkg_resources.parse_version("1.0.0")

if pandas is not None:
    PANDAS_INSTALLED_VERSION = pkg_resources.get_distribution("pandas").parsed_version
else:
    # Set to less than MIN version.
    PANDAS_INSTALLED_VERSION = pkg_resources.parse_version("0.0.0")

...

@unittest.skipIf( 
    pandas is None or PANDAS_INSTALLED_VERSION < PANDAS_MINIUM_VERSION, 
    "Only `pandas version >=1.0.0` supported", 
) 

The alternative approach is using pytest.importorskip, which is more concise:

pytest.importorskip(
        "pandas",
        minversion="1.0.0",
        reason="Requires `pandas version >= 1.0.0` which introduces pandas.NA",
)

We should use pytest.importorskip combined with the minversion argument. That feature relies on the imported module's __version__ attribute, but all our major dependencies support it, so we should be fine.

Metadata

Metadata

Assignees

Labels

api: bigqueryIssues related to the googleapis/python-bigquery API.priority: p3Desirable enhancement or fix. May not be included in next release.testingtype: cleanupAn internal cleanup or hygiene concern.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions