Я начал писать модульные тесты для моего Flask API. Я заставил их работать, когда объявил вне класса. Однако для простоты и ограничений OOP я пытаюсь заставить все работать из класса. Проблема в том, что я не могу передать какие-либо методы фикстуры в мой тестовый класс. У меня есть следующий код:
#conftest.py
import os, json, pytest
from ..app import create_app
from flask import Flask
@pytest.fixture
def env_setup():
env_name = os.getenv('FLASK_ENV')
app = create_app(env_name)
return app
Я пытаюсь импортировать env_setup в следующий файл.
# test_BaseURL.py
import pytest
@pytest.mark.usefixtures("env_setup")
class TestStaticPages:
def setUp(self, env_setup):
"""
Setup Test
"""
self.client = env_setup.test_client()
def test_base_route(self, env_setup):
#client = env_setup.test_client()
url = '/'
html1 = b'Welcome to the API. Please visit '
html2 = b'https://example.com to learn more about this app.'
response = self.client.get(url)
assert response.get_data() == html1 + html2
assert response.status_code == 200
Я продолжаю получать следующую ошибку при запуске этого теста:
> response = self.client.get(url)
E AttributeError: 'TestStaticPages' object has no attribute 'client'
src/tests/test_BaseURL.py:18: AttributeError
Однако, если мне нужно раскомментировать строку с client = env_setup.test_client()
, она работает. По какой-то причине он не может получить настройку из метода setUP и продолжает выдавать ошибки.