Я разрабатываю дизайн для автоматизации некоторых тестовых сценариев с использованием Pytest Framework. Я использую формат файла YAML для передачи входных параметров для каждого теста. Каждый тестовый сценарий может вызывать один или несколько методов уровня библиотеки. И каждый метод библиотеки может вызывать более одного метода библиотеки по очереди. Здесь мне нужно передать много аргументов, необходимых для внутренних вызовов библиотеки. Есть ли лучший подход к следующему дизайну?
Файл input.yaml принимает входные параметры для каждого тестового случая. Testcase вызывает библиотечный API, и этот API может вызывать многие другие API для восстановления после различных ошибок. В настоящее время я думаю о передаче всех необходимых параметров из input.yaml.
input.yaml
testcases:
testcase1:
param1: value1
param2: value2
paramN: valueN
testsuite.py
def test_testcase1(self, **kwargs):
libApi(force=True, **kwargs)
lib.py
def libApi(force=False, **kwargs):
if force:
try:
api(**kwargs)
except CustomException1:
api1(**kwargs)
api4(**kwargs)
except CustomException2:
api2(**kwargs)
api3(**kwargs)
except CustomExceptionN:
apiN(**kwargs)
else:
api(**kwargs)
В приведенном выше фрагменте кода, когда force=True
, может быть вызвано множество api()
, и мне нужно передать все параметры, необходимые для всех этих apis, из input.yaml, так как я не знаю, в каком состоянии возникает ошибка. Есть ли лучший подход к этому дизайну?