Утверждение в цикле for в Python

#python #loops #pytest #assert #allure

Вопрос:

У меня есть список переменных, которые я должен утвердить до 0. теперь код должен быть частью платформы pytest и совместим с отчетами allure. Поскольку утверждение, которое я использую, объявляет только 1 тестовый случай, есть ли в любом случае, я проверяю каждое утверждение как различное scn?

 list = [0,1,0,1,0,0,0]
for x in list:
    assert x == 0
 

Когда я запускаю приведенный выше код, он проходит как 1 тестовый случай. Есть ли какой-либо другой способ вместо указания каждого элемента, чтобы allure/pytest рассматривали каждое утверждение как тестовый случай diff?

Комментарии:

1. Почему вы хотите рассматривать каждое утверждение как отдельный тестовый случай?

2. Я думаю, что subTest это может дать вам другой отчет для каждого утверждения.

3.docs.pytest.org/en/6.2.x/parametrize.html?

4. Не перезаписывайте встроенные ключевые слова/функции python, например, list если вы не знаете, что делаете. Это может/вызовет проблемы в будущем, а также плохое именование переменных.

5. @Jab слово из списка было просто примером.

Ответ №1:

Вариант 1 Вот решение вашего вопроса

 import pytest

list = [0,1,0,1,0,0,0]
@pytest.mark.nondestructive
@pytest.mark.parametrize("item",list)
def test_stackquestion(item):
    assert item == 0
 

Вариант 2 если вы хотите получить результат в рамках одного теста и не хотите, чтобы тест завершался после каждого утверждения и давал коллективный результат всех утверждений, вы также можете реализовать мягкое утверждение с помощью отложенного утверждения.