Второй файл test_registration.py с таким содержанием:
class TestRegistrationOfAParticipantAsALegalEntity(TheFirstStepOfRegistration):
def test_registration_of_a_participant_as_a_legal_entity(self, browser):
"""Регистрации участника как юридическое лицо"""
# Первый шаг регистрации
self.click_on_the_registration_button()
Сам вопрос: при запуске через cmd появляется ошибка: PytestCollectionWarning: cannot collect test class ‘TestRegistrationOfAParticipantAsALegalEntity’ because it has a init constructor (from: test_registration.py)
class TestRegistrationOfAParticipantAsALegalEntity(TheFirstStepOfRegistration)
Гуглил, проблема в том что pytest не поддерживает конструктор init, но решения пока не нашёл.
Внутри каждой тестовой функции создавать объект-браузер
Создавать классовую переменную browser = None вне инита, а затем в классовом методе setup_class записывать в переменную browser необходимый объект. Ну или сделать кастомную функцию set_browser(), добавить к ней декоратор classmethod и вызывать ее там, где нужно.
class BaseTest:
browser = None
@classmethod
def setup_class(cls):
"""
Setup method, called to set up each class before tests execution. Could be overridden/overloaded
"""
cls.browser = Browser()
Далее тесты наследуются от этого класса. Если браузер нужно как-то изменять, можно использовать другие методы:
def setup_method(self, method):
"""setup any state tied to the execution of the given method in a
class. setup_method is invoked for every test method of a class.
"""
def setup_function(function):
"""setup any state tied to the execution of the given function.
Invoked for every test function in the module.
"""
Единственная проблема фикстуры - её нужно передавать в каждый тест аргументом, что очень неудобно. В моём случае у меня было бы 3 таких фикстуры, что меня сильно бесило