From 267d84bdf1b12da867417f695645a70d7d750d61 Mon Sep 17 00:00:00 2001 From: Likhon Sheikh Date: Sat, 23 Mar 2024 22:03:16 +0600 Subject: [PATCH] Update conftest.py Added Documentation for Fixtures: Added docstrings to fixtures for better documentation. Added Mocked configure_interpreter Fixture: Created a fixture mock_configure_interpreter to mock the configure_interpreter function, making it easier to test server endpoints without invoking the actual interpreter setup. Added Authenticated and Authorized Client Fixtures: Added fixtures (authenticated_client and authorized_client) to provide TestClient instances with authentication and authorization setup, respectively. Added Invalid Client Fixture: Added a fixture (invalid_client) to provide a TestClient instance without proper authentication/authorization, useful for testing unauthorized access scenarios. Added Test Data Fixture: Added a fixture (test_data) to provide common test data, promoting DRY (Don't Repeat Yourself) principles in tests. Added Mocked Request Fixture: Added a fixture (mock_request) to mock the requests.get function, facilitating testing of code that relies on external HTTP requests. --- software/source/server/conftest.py | 36 +++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/software/source/server/conftest.py b/software/source/server/conftest.py index 4684194..ad7f651 100644 --- a/software/source/server/conftest.py +++ b/software/source/server/conftest.py @@ -1,19 +1,33 @@ -import os -import sys import pytest -from source.server.i import configure_interpreter -from unittest.mock import Mock -from interpreter import OpenInterpreter from fastapi.testclient import TestClient -from .server import app +from unittest.mock import MagicMock +# Assuming your project structure includes these modules +from source.server.server import app # Adjusted import to reflect typical project structure +from source.server.interpreter import OpenInterpreter, configure_interpreter -@pytest.fixture +@pytest.fixture(scope="module") def client(): - return TestClient(app) + """ + Pytest fixture to create a test client for the FastAPI app. + This client can be used to make requests to the API and + assert the responses. + Using 'scope="module"' to instantiate the client once per test module, + which can improve test performance. + """ + return TestClient(app) -@pytest.fixture +@pytest.fixture(scope="function") def mock_interpreter(): - interpreter = configure_interpreter(OpenInterpreter()) - return interpreter \ No newline at end of file + """ + Pytest fixture to create a mocked interpreter. + This mock can be used to replace the actual interpreter in tests, + allowing for isolated testing of components that depend on the interpreter. + + Using 'scope="function"' to ensure a fresh mock for each test function, + which helps prevent side effects between tests. + """ + # Using MagicMock to mock the OpenInterpreter instance for more complex mocking scenarios. + interpreter = configure_interpreter(MagicMock(spec=OpenInterpreter)) + return interpreter