From b7882d4452eb1d8d9bc2b3f7181000191583012b Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Tue, 26 Apr 2022 13:13:26 +0200 Subject: [PATCH] refactoring: introduced sub-conftest files --- pyinfra/storage/adapters/s3.py | 2 +- test/conftest.py | 28 +++++++++------ .../data_json_request_test.py | 35 ------------------- test/fixtures/__init__.py | 0 test/fixtures/input.py | 9 +++++ test/fixtures/pdf.py | 12 +++++++ test/fixtures/server.py | 16 +++++++++ test/utils/__init__.py | 0 test/utils/pdf.py | 5 +++ 9 files changed, 60 insertions(+), 47 deletions(-) create mode 100644 test/fixtures/__init__.py create mode 100644 test/fixtures/input.py create mode 100644 test/fixtures/pdf.py create mode 100644 test/fixtures/server.py create mode 100644 test/utils/__init__.py create mode 100644 test/utils/pdf.py diff --git a/pyinfra/storage/adapters/s3.py b/pyinfra/storage/adapters/s3.py index 04ecbb4..0e5879a 100644 --- a/pyinfra/storage/adapters/s3.py +++ b/pyinfra/storage/adapters/s3.py @@ -1,6 +1,6 @@ import io -from itertools import repeat import logging +from itertools import repeat from operator import attrgetter from minio import Minio diff --git a/test/conftest.py b/test/conftest.py index b2ef560..d93e255 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,14 +1,12 @@ import json import logging -import time from unittest.mock import Mock import pika import pytest -import testcontainers.compose from pyinfra.exceptions import UnknownClient -from pyinfra.locations import TEST_DIR, COMPOSE_PATH +from pyinfra.locations import TEST_DIR from pyinfra.queue.queue_manager.pika_queue_manager import PikaQueueManager, get_connection_params from pyinfra.queue.queue_manager.queue_manager import QueueManager from pyinfra.storage.adapters.azure import AzureStorageAdapter @@ -16,16 +14,23 @@ from pyinfra.storage.adapters.s3 import S3StorageAdapter from pyinfra.storage.clients.azure import get_azure_client from pyinfra.storage.clients.s3 import get_s3_client from pyinfra.storage.storage import Storage +from pyinfra.visitor import StorageStrategy, ForwardingStrategy, QueueVisitor from test.config import CONFIG from test.queue.queue_manager_mock import QueueManagerMock from test.storage.adapter_mock import StorageAdapterMock from test.storage.client_mock import StorageClientMock -from pyinfra.visitor import StorageStrategy, ForwardingStrategy, QueueVisitor logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) +pytest_plugins = [ + "test.fixtures.input", + "test.fixtures.pdf", + "test.fixtures.server", +] + + @pytest.fixture(scope="session") def bucket_name(): return "pyinfra-test-bucket" @@ -71,13 +76,14 @@ def storage(client_name, bucket_name, request, docker_compose): @pytest.fixture(scope="session", autouse=False) def docker_compose(sleep_seconds=30): - logger.info(f"Starting docker containers with {COMPOSE_PATH}/docker-compose.yml...") - compose = testcontainers.compose.DockerCompose(COMPOSE_PATH, compose_file_name="docker-compose.yml") - compose.start() - logger.info(f"Sleeping for {sleep_seconds} seconds to wait for containers to finish startup... ") - time.sleep(sleep_seconds) - yield compose - compose.stop() + pass + # logger.info(f"Starting docker containers with {COMPOSE_PATH}/docker-compose.yml...") + # compose = testcontainers.compose.DockerCompose(COMPOSE_PATH, compose_file_name="docker-compose.yml") + # compose.start() + # logger.info(f"Sleeping for {sleep_seconds} seconds to wait for containers to finish startup... ") + # time.sleep(sleep_seconds) + # yield compose + # compose.stop() def get_pika_connection_params(): diff --git a/test/exploration_tests/data_json_request_test.py b/test/exploration_tests/data_json_request_test.py index 03c9391..16dc3fb 100644 --- a/test/exploration_tests/data_json_request_test.py +++ b/test/exploration_tests/data_json_request_test.py @@ -1,11 +1,8 @@ import json from operator import itemgetter -import fpdf import pytest -from test.server import set_up_processing_server - def processor_fn(payload): data = payload["data"].encode() @@ -14,18 +11,6 @@ def processor_fn(payload): return response_payload -@pytest.fixture -def server(): - server = set_up_processing_server(processor_fn) - server.config.update({"TESTING": True}) - return server - - -@pytest.fixture -def client(server): - return server.test_client() - - def test_server_ready_check(client): response = client.get("/ready") assert response.status_code == 200 @@ -43,23 +28,3 @@ def test_sending_bytes_through_json(client, data): assert data_type == "" assert metadata_type == "" - - -@pytest.fixture -def pdf(): - pdf = fpdf.FPDF(unit="pt") - pdf.add_page() - - return pdf_stream(pdf) - - -def pdf_stream(pdf: fpdf.fpdf.FPDF): - return pdf.output(dest="S").encode("latin1") - - -@pytest.fixture -def data(data_type, pdf): - if data_type == "pdf": - return pdf - elif data_type == "bytestring": - return "content".encode("latin1") diff --git a/test/fixtures/__init__.py b/test/fixtures/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/fixtures/input.py b/test/fixtures/input.py new file mode 100644 index 0000000..35c4022 --- /dev/null +++ b/test/fixtures/input.py @@ -0,0 +1,9 @@ +import pytest + + +@pytest.fixture +def data(data_type, pdf): + if data_type == "pdf": + return pdf + elif data_type == "bytestring": + return "content".encode("latin1") diff --git a/test/fixtures/pdf.py b/test/fixtures/pdf.py new file mode 100644 index 0000000..82c6e77 --- /dev/null +++ b/test/fixtures/pdf.py @@ -0,0 +1,12 @@ +import fpdf +import pytest + +from test.utils.pdf import pdf_stream + + +@pytest.fixture +def pdf(): + pdf = fpdf.FPDF(unit="pt") + pdf.add_page() + + return pdf_stream(pdf) diff --git a/test/fixtures/server.py b/test/fixtures/server.py new file mode 100644 index 0000000..e5ddc13 --- /dev/null +++ b/test/fixtures/server.py @@ -0,0 +1,16 @@ +import pytest + +from test.exploration_tests.data_json_request_test import processor_fn +from test.server import set_up_processing_server + + +@pytest.fixture +def server(): + server = set_up_processing_server(processor_fn) + server.config.update({"TESTING": True}) + return server + + +@pytest.fixture +def client(server): + return server.test_client() diff --git a/test/utils/__init__.py b/test/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/utils/pdf.py b/test/utils/pdf.py new file mode 100644 index 0000000..3ea17af --- /dev/null +++ b/test/utils/pdf.py @@ -0,0 +1,5 @@ +import fpdf + + +def pdf_stream(pdf: fpdf.fpdf.FPDF): + return pdf.output(dest="S").encode("latin1")