@@ -58,14 +58,14 @@ def test_try_import_raises_error_w_legacy_pyarrow():
5858 versions .try_import (raise_if_error = True )
5959
6060
61- @pytest .mark .skipif (
62- pyarrow is not None ,
63- reason = "pyarrow is installed, but this test needs it not to be" ,
64- )
6561def test_try_import_raises_error_w_no_pyarrow ():
62+ import sys
63+
6664 versions = _versions_helpers .PyarrowVersions ()
67- with pytest .raises (exceptions .LegacyPyarrowError ):
68- versions .try_import (raise_if_error = True )
65+ with mock .patch .dict (sys .modules , {"pyarrow" : None }):
66+ assert versions .try_import (raise_if_error = False ) is None
67+ with pytest .raises (exceptions .LegacyPyarrowError ):
68+ versions .try_import (raise_if_error = True )
6969
7070
7171@pytest .mark .skipif (pyarrow is None , reason = "pyarrow is not installed" )
@@ -121,17 +121,29 @@ def test_returns_none_with_legacy_bqstorage():
121121 assert bq_storage is None
122122
123123
124- @pytest .mark .skipif (
125- bigquery_storage is not None ,
126- reason = "Tests behavior when `google-cloud-bigquery-storage` isn't installed" ,
127- )
128124def test_returns_none_with_bqstorage_uninstalled ():
129- try :
130- bqstorage_versions = _versions_helpers .BQStorageVersions ()
131- bq_storage = bqstorage_versions .try_import ()
132- except exceptions .LegacyBigQueryStorageError : # pragma: NO COVER
133- raise ("NotFound error raised when raise_if_error == False." )
134- assert bq_storage is None
125+ import sys
126+
127+ from google import cloud
128+
129+ versions = _versions_helpers .BQStorageVersions ()
130+ with mock .patch .dict (sys .modules , {"google.cloud.bigquery_storage" : None }):
131+ with mock .patch .dict (cloud .__dict__ ):
132+ cloud .__dict__ .pop ("bigquery_storage" , None )
133+ assert versions .try_import () is None
134+
135+
136+ def test_raises_error_with_bqstorage_uninstalled ():
137+ import sys
138+
139+ from google import cloud
140+
141+ versions = _versions_helpers .BQStorageVersions ()
142+ with mock .patch .dict (sys .modules , {"google.cloud.bigquery_storage" : None }):
143+ with mock .patch .dict (cloud .__dict__ ):
144+ cloud .__dict__ .pop ("bigquery_storage" , None )
145+ with pytest .raises (exceptions .BigQueryStorageNotFoundError ):
146+ versions .try_import (raise_if_error = True )
135147
136148
137149@pytest .mark .skipif (
@@ -219,14 +231,14 @@ def test_try_import_raises_error_w_legacy_pandas():
219231 versions .try_import (raise_if_error = True )
220232
221233
222- @pytest .mark .skipif (
223- pandas is not None ,
224- reason = "pandas is installed, but this test needs it not to be" ,
225- )
226234def test_try_import_raises_error_w_no_pandas ():
235+ import sys
236+
227237 versions = _versions_helpers .PandasVersions ()
228- with pytest .raises (exceptions .LegacyPandasError ):
229- versions .try_import (raise_if_error = True )
238+ with mock .patch .dict (sys .modules , {"pandas" : None }):
239+ assert versions .try_import (raise_if_error = False ) is None
240+ with pytest .raises (exceptions .LegacyPandasError ):
241+ versions .try_import (raise_if_error = True )
230242
231243
232244@pytest .mark .skipif (pandas is None , reason = "pandas is not installed" )
@@ -255,6 +267,7 @@ def test_installed_pandas_gbq_version_returns_cached():
255267
256268def test_installed_pandas_gbq_version_returns_parsed_version ():
257269 import sys
270+
258271 mock_pandas_gbq = mock .Mock ()
259272 mock_pandas_gbq .__version__ = "1.2.3"
260273 versions = _versions_helpers .PandasGBQVersions ()
@@ -268,6 +281,7 @@ def test_installed_pandas_gbq_version_returns_parsed_version():
268281
269282def test_installed_pandas_gbq_version_falls_back_on_import_error ():
270283 import sys
284+
271285 versions = _versions_helpers .PandasGBQVersions ()
272286 with mock .patch .dict (sys .modules , {"pandas_gbq" : None }):
273287 version = versions .installed_version
@@ -279,6 +293,7 @@ def test_installed_pandas_gbq_version_falls_back_on_import_error():
279293
280294def test_installed_pandas_gbq_version_falls_back_on_other_error ():
281295 import sys
296+
282297 # Simulate a corrupted package raising an error on import/property access
283298 class CorruptPandasGBQ :
284299 @property
@@ -302,6 +317,7 @@ def test_pandas_gbq_delegation_api_version_returns_cached():
302317
303318def test_pandas_gbq_delegation_api_version_returns_value ():
304319 import sys
320+
305321 mock_pandas_gbq = mock .Mock ()
306322 mock_pandas_gbq ._internal_delegation_api_version = 42
307323 versions = _versions_helpers .PandasGBQVersions ()
@@ -313,6 +329,7 @@ def test_pandas_gbq_delegation_api_version_returns_value():
313329
314330def test_pandas_gbq_delegation_api_version_falls_back_on_import_error ():
315331 import sys
332+
316333 versions = _versions_helpers .PandasGBQVersions ()
317334 with mock .patch .dict (sys .modules , {"pandas_gbq" : None }):
318335 version = versions .delegation_api_version
@@ -322,6 +339,7 @@ def test_pandas_gbq_delegation_api_version_falls_back_on_import_error():
322339
323340def test_pandas_gbq_delegation_api_version_falls_back_on_other_error ():
324341 import sys
342+
325343 class CorruptPandasGBQ :
326344 @property
327345 def _internal_delegation_api_version (self ):
0 commit comments