#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 если вы хотите получить результат в рамках одного теста и не хотите, чтобы тест завершался после каждого утверждения и давал коллективный результат всех утверждений, вы также можете реализовать мягкое утверждение с помощью отложенного утверждения.