Как использовать множественные сбои в Unittest и печатать их как сбои, не завершая тест? - PullRequest
0 голосов
/ 12 мая 2019

Мне нужно написать тест с несколькими процедурами, которые проверяют несколько вариантов использования (этапов). Для каждого шага это может быть подэтап. Каждый шаг / подэтап проверяет что-то еще, например:

Procedure 1 :
 Step 1 : Verify something
 Step 2 : Compare ....
  Sub-step 2.1 : Compare ...
  Sub-step 2.2 : Compare ...
 Step 3 : Configure ....

Каждый шаг или подэтап может завершиться неудачей / пройти, и тест будет продолжен в обычном режиме.

Step 1 : Verify something     - PASS
Step 2 : Compare ....         - FAIL
 Sub-step 2.1 : Compare ...  - PASS
 Sub-step 2.2 : Compare ...  - FAIL
Step 3 : Configure ....       - PASS

Также мне нужно, чтобы результаты были в интерактивном HTML-файле результатов (я использовал Allure) шаг за шагом с результатами и информацией для каждого шага.

Я пытался использовать Pytest и Allure (для интерактивного файла отчета о результатах HTML), но для представления ошибки мне нужно использовать Assert, и исключение Assert вызывает немедленный сбой теста.

Существует ли какая-либо другая инфраструктура, кроме Allure, которая может помочь мне создать файл отчета HTML на высоком уровне и представить ошибку не так, как Assert? Есть ли способ заставить Allure показывать сбой без использования Assert?

   def test_procedure_1(self):
        with allure.step("1. Configure "):
           Assert 0
        with allure.step("2. prints"):
           Assert 1
        with allure.step("3. attached"):
           Assert 0
        with allure.step("4. compare"):
           Assert 1

Другой пример:

    def test_procedure_2(self):
        with self.subTest("step 1:"):
            Assert 0
            with self.subTest("step 1.1:"):
                Assert 1
                with self.subTest("step 1.1.1:"):
                    Assert 1
                    with self.subTest("step 1.1.1.1:"):
                        Assert 0
        with self.subTest("step 2:"):
             Assert 1

...