Remove the conftest defined fixtures as mock methods return mocks already removing the need for the defined mocks
This commit is contained in:
parent
867cd0cad1
commit
e53f4e3b2b
4 changed files with 16 additions and 35 deletions
|
|
@ -1,27 +0,0 @@
|
||||||
"""Provide fixtures that can be reused by the entire test suite.
|
|
||||||
|
|
||||||
For more information on this pattern see:
|
|
||||||
https://docs.pytest.org/en/stable/reference/fixtures.html#conftest-py-sharing-fixtures-across-multiple-files
|
|
||||||
"""
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_app(mocker):
|
|
||||||
"""Return a mock FastAPI app.
|
|
||||||
|
|
||||||
This is just a mock, where the get method returns a mock.
|
|
||||||
"""
|
|
||||||
wrapper = mocker.Mock()
|
|
||||||
app = mocker.Mock()
|
|
||||||
app.get.return_value = wrapper
|
|
||||||
return app
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_server(mock_app, mocker):
|
|
||||||
"""Return a LabThings FastAPI server where .app is the mock_app fixture."""
|
|
||||||
server = mocker.Mock()
|
|
||||||
server.app = mock_app
|
|
||||||
return server
|
|
||||||
|
|
@ -34,12 +34,13 @@ def mock_static_dir():
|
||||||
["fontfile.woff2", True],
|
["fontfile.woff2", True],
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_add_static_file(filename, allow_cache, mock_app):
|
def test_add_static_file(filename, allow_cache, mocker):
|
||||||
"""Test running add_static_file with both font and non-font files.
|
"""Test running add_static_file with both font and non-font files.
|
||||||
|
|
||||||
This should creates a wrapped function that returns a FileResponse, this
|
This should creates a wrapped function that returns a FileResponse, this
|
||||||
should be have the path on disk and the no cache headers if not a woff2 font.
|
should be have the path on disk and the no cache headers if not a woff2 font.
|
||||||
"""
|
"""
|
||||||
|
mock_app = mocker.Mock()
|
||||||
# Get the wrapper function from the mocked decorator
|
# Get the wrapper function from the mocked decorator
|
||||||
wrapper = mock_app.get.return_value
|
wrapper = mock_app.get.return_value
|
||||||
serve_static_files.add_static_file(mock_app, fname=filename, folder="bar")
|
serve_static_files.add_static_file(mock_app, fname=filename, folder="bar")
|
||||||
|
|
@ -71,8 +72,9 @@ def test_add_static_file(filename, allow_cache, mock_app):
|
||||||
assert response.headers[key] == value
|
assert response.headers[key] == value
|
||||||
|
|
||||||
|
|
||||||
def test_add_static_with_no_static_dir(mock_app, mocker):
|
def test_add_static_with_no_static_dir(mocker):
|
||||||
"""Test that a FileNotFound error is raised if the static dir does not exist."""
|
"""Test that a FileNotFound error is raised if the static dir does not exist."""
|
||||||
|
mock_app = mocker.Mock()
|
||||||
# Mock STATIC_PATH to something that doesn't exist
|
# Mock STATIC_PATH to something that doesn't exist
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
"openflexure_microscope_server.server.serve_static_files.STATIC_PATH",
|
"openflexure_microscope_server.server.serve_static_files.STATIC_PATH",
|
||||||
|
|
@ -116,8 +118,9 @@ def test_check_static_dir(mock_static_dir, mocker):
|
||||||
serve_static_files.check_static_dir()
|
serve_static_files.check_static_dir()
|
||||||
|
|
||||||
|
|
||||||
def test_add_static_files(mock_app, mock_static_dir, mocker):
|
def test_add_static_files(mock_static_dir, mocker):
|
||||||
"""Check add_static_files mounts the internal webapp dirs, and sets endpoints for files."""
|
"""Check add_static_files mounts the internal webapp dirs, and sets endpoints for files."""
|
||||||
|
mock_app = mocker.Mock()
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
"openflexure_microscope_server.server.serve_static_files.STATIC_PATH",
|
"openflexure_microscope_server.server.serve_static_files.STATIC_PATH",
|
||||||
mock_static_dir,
|
mock_static_dir,
|
||||||
|
|
@ -158,8 +161,9 @@ def test_add_static_files(mock_app, mock_static_dir, mocker):
|
||||||
assert os.path.join(mock_static_dir, "js") in mounted_dirs
|
assert os.path.join(mock_static_dir, "js") in mounted_dirs
|
||||||
|
|
||||||
|
|
||||||
def test_add_static_files_with_scan_dir(mock_app, mock_static_dir, mocker):
|
def test_add_static_files_with_scan_dir(mock_static_dir, mocker):
|
||||||
"""Check the scan dir mounts if supplied."""
|
"""Check the scan dir mounts if supplied."""
|
||||||
|
mock_app = mocker.Mock()
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
"openflexure_microscope_server.server.serve_static_files.STATIC_PATH",
|
"openflexure_microscope_server.server.serve_static_files.STATIC_PATH",
|
||||||
mock_static_dir,
|
mock_static_dir,
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,13 @@ def test_no_config():
|
||||||
ofm_server.serve_from_cli([])
|
ofm_server.serve_from_cli([])
|
||||||
|
|
||||||
|
|
||||||
def test_successful_start(mock_server, mocker, caplog):
|
def test_successful_start(mocker, caplog):
|
||||||
"""Check some basic things from the microscope setup.
|
"""Check some basic things from the microscope setup.
|
||||||
|
|
||||||
This test checks that logging is set up and that the actual function used for
|
This test checks that logging is set up and that the actual function used for
|
||||||
handling shutdown events shuts down the mjpeg streams.
|
handling shutdown events shuts down the mjpeg streams.
|
||||||
"""
|
"""
|
||||||
|
mock_server = mocker.Mock()
|
||||||
# Create a mock for the camera so we can check the MJPEG streams are closed on
|
# Create a mock for the camera so we can check the MJPEG streams are closed on
|
||||||
# shutdown.
|
# shutdown.
|
||||||
mock_camera = mocker.Mock()
|
mock_camera = mocker.Mock()
|
||||||
|
|
@ -69,11 +70,12 @@ def test_successful_start(mock_server, mocker, caplog):
|
||||||
assert str(caplog.records[0].msg) == "mock-54321"
|
assert str(caplog.records[0].msg) == "mock-54321"
|
||||||
|
|
||||||
|
|
||||||
def test_failed_customise(mock_server, mocker):
|
def test_failed_customise(mocker):
|
||||||
"""Check what happens if there is an error before the server is started by uvicorn.
|
"""Check what happens if there is an error before the server is started by uvicorn.
|
||||||
|
|
||||||
This differs based on whether the --fallback flag is set.
|
This differs based on whether the --fallback flag is set.
|
||||||
"""
|
"""
|
||||||
|
mock_server = mocker.Mock()
|
||||||
# Mock the LabThings function that returns the server so we have a mock server
|
# Mock the LabThings function that returns the server so we have a mock server
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
"openflexure_microscope_server.server.lt.cli.server_from_config",
|
"openflexure_microscope_server.server.lt.cli.server_from_config",
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,9 @@ SIM_CONFIG = os.path.join(REPO_ROOT, "ofm_config_simulation.json")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("side_effect", [None, RuntimeError("Mock")])
|
@pytest.mark.parametrize("side_effect", [None, RuntimeError("Mock")])
|
||||||
def test_monkey_patched_handle_exit(side_effect, mock_app, mocker):
|
def test_monkey_patched_handle_exit(side_effect, mocker):
|
||||||
"""Test that handle exit is monkey_patched."""
|
"""Test that handle exit is monkey_patched."""
|
||||||
|
mock_app = mocker.Mock()
|
||||||
# Setup the same for any side_effect
|
# Setup the same for any side_effect
|
||||||
# Create mocks for FastAPI.Server, and for our custom shutdown function
|
# Create mocks for FastAPI.Server, and for our custom shutdown function
|
||||||
mock_shutdown_func = mocker.Mock(side_effect=side_effect)
|
mock_shutdown_func = mocker.Mock(side_effect=side_effect)
|
||||||
|
|
@ -49,8 +50,9 @@ def test_monkey_patched_handle_exit(side_effect, mock_app, mocker):
|
||||||
assert original_mock_handle_exit.call_count == 0
|
assert original_mock_handle_exit.call_count == 0
|
||||||
|
|
||||||
|
|
||||||
def test_customise_server(mock_server, mocker):
|
def test_customise_server(mocker):
|
||||||
"""Check that all server customisation stages are called."""
|
"""Check that all server customisation stages are called."""
|
||||||
|
mock_server = mocker.Mock()
|
||||||
# Mock everything to be called in customisation, partly setup may not be complete,
|
# Mock everything to be called in customisation, partly setup may not be complete,
|
||||||
# but also to limit excess coverage reporting.
|
# but also to limit excess coverage reporting.
|
||||||
mocked_add_static = mocker.patch.object(ofm_server, "add_static_files")
|
mocked_add_static = mocker.patch.object(ofm_server, "add_static_files")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue