Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/python-uv-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ jobs:
with:
# Install a specific version of uv.
version: "0.9.6"
- name: Run tests
- name: Run Python Example Tests
# For example, using `pytest`
run: uv run --directory python/python-examples pytest
run: uv run --directory python/python-examples pytest
1 change: 1 addition & 0 deletions python/python-examples/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies = [
dev = [
"pytest",
"polyfactory",
"requests",
"httpx"
]

Expand Down
60 changes: 60 additions & 0 deletions python/python-examples/test/test_mocking_python.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
"""Test mocking with python."""
import logging as log
import pytest
from unittest.mock import patch
from datetime import date
import requests

FAKE_RESULTS = None

def get_dune_character():
""" Singleton function to get dune character(s)"""
global FAKE_RESULTS
if FAKE_RESULTS is None:
# Retrieve results
log.info("Attempting request")
FAKE_RESULTS = requests.get("http://fakeurl.com/names")

return FAKE_RESULTS


@patch("requests.get")
def test_unittest_singleton(mock_request):
"""Example mocking using"""
x_return_value = ["Leto Atreides"]
mock_request.return_value = x_return_value
results = get_dune_character()
log.info(f"Results {results}")
assert x_return_value == results


@pytest.mark.xfail
@patch("requests.get")
def test_unittest_singleton_second_call(mock_request):
""" Example mocking singleton second call that should fail because singleton already loaded. """
x_return_value = ["Paul Atreides", "Leto Atreides"]
mock_request.return_value = x_return_value
results = get_dune_character()
assert x_return_value == results


# You can use `autouse` here to make this happen automatically
@pytest.fixture(autouse=False)
def reload_module():
import importlib
import test_mocking_python
importlib.reload(test_mocking_python)


@pytest.mark.parametrize("x_return_value", [
(["Paul Atreides", "Leto Atreides"]),
(["Sir Duncan Idaho"]),
(["Lady Jessica"]),
(["Feyd-Rautha Harkonnen"])
])
@patch("requests.get")
def test_unittest_singleton_reload(mock_request, reload_module, x_return_value):
""" Example mocking singleton second call reload """
mock_request.return_value = x_return_value
results = get_dune_character()
assert x_return_value == results
73 changes: 70 additions & 3 deletions python/python-examples/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.