Usage¶
Installation¶
pytest_object_getter is available on PyPI hence you can use pip to install it.
It is recommended to perform the installation in an isolated python virtual environment (env). You can create and activate an env using any tool of your preference (ie virtualenv, venv, pyenv).
Assuming you have ‘activated’ a python virtual environment:
python -m pip install pytest-object-getter
Simple Use Case¶
Common Use Case for the pytest_object_getter is to use the ‘get_obejct’ fixture
to mock an object in your python test case (using pytest).
Let’s see a test that mocks the requests.get method to avoid actual network communication:
Install Python dependencies:
python3 -m pip install ask-pypi
Test case:
import pytest
@pytest.fixture
def mock_response():
def init(self, package_name: str):
self.status_code = 200 if package_name == 'existing-package' else 404
return type('MockResponse', (), {
'__init__': init
})
@pytest.fixture
def create_mock_requests(mock_response):
def _create_mock_requests():
def mock_get(*args, **kwargs):
package_name = args[0].split('/')[-1]
return mock_response(package_name)
return type('MockRequests', (), {
'get': mock_get,
})
return _create_mock_requests
def test_fixture(get_object, create_mock_requests):
from ask_pypi import is_pypi_project
assert is_pypi_project('numpy') == True
assert is_pypi_project('pandas') == True
assert is_pypi_project('existing-package') == False
get_object('is_project', 'ask_pypi.pypi_project',
overrides={'requests': lambda: create_mock_requests()})
assert is_pypi_project('existing-package') == True
assert is_pypi_project('numpy') == False
assert is_pypi_project('pandas') == False
assert is_pypi_project('so-magic') == False