Есть ли лучший подход для достижения этого фрагмента кода? - PullRequest
0 голосов
/ 30 мая 2019

Я разрабатываю дизайн для автоматизации некоторых тестовых сценариев с использованием 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, так как я не знаю, в каком состоянии возникает ошибка. Есть ли лучший подход к этому дизайну?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...