Привет!
Подскажите как правильно организовать архитектуру теста, либо чтобы работало;)
Есть файл /data/test_config.json
из которого нужно передать параметры непосредственно в тест, также jira_link
и tc_title
в @allure
.
import allure
import pytest
from lib import Utilities
class MyClass:
@allure.title("{tc_title}")
@allure.link("{jira_link}")
@pytest.mark.usefixtures("_my_fixture_needs_id")
@pytest.mark.parametrize(
"tc_title, jira_link, param1, param2, my_id",
Utilities.get_json_data_for_parametrize("/data/test_config.json"),
)
def test_something(
self,
param1,
param2,
my_id
) -> None:
pass
Далее есть некий teardown в файле conftest @pytest.mark.usefixtures("_my_fixture_needs_id")
который также требует my_id
удаления неких данных через api запрос:
import pytest
from lib import BaseAPI
from _pytest.fixtures import FixtureRequest
@pytest.fixture()
def _test_something_teardown(request: FixtureRequest) -> None:
yield
session = BaseAPI()
session.session_login()
instance = request.test_something.pytestmark[0]
parametrize_args = instance.args[1][0]
session.delete_client_relation(
my_id=parametrize_args[0], attribute="delete_instance"
)
Как видно был организован кривой воркэраунд для передачи my_id в запрос:
instance = request.test_something.pytestmark[0]
parametrize_args = instance.args[1][0]
Проблема воркэрауда в хардкоде и плохой маштабируемости фикстуры.
Собственно вопрос как передать my_id
в @pytest.mark.usefixtures("_my_fixture_needs_id")
?
**знаю можно использовать parametrize для параметризации фикстуры, но он уже используется для других целей - передачи данных в тест и алюр из json файла.