Изучение и использование pytest 23 — понятный чат об общем наборе функций allure и инструкциях по его использованию.
Изучение и использование pytest 23 — понятный чат об общем наборе функций allure и инструкциях по его использованию.

1 @allure.step()

  • @allure.step()Декоратор,могу позволитьтествариант использованиясуществоватьallureВ отчете показаны подробныетестпроцесс;
  • step() только один параметрtitle,Просто передай что угодносуществоватьallureЧто отображается на;
  • Пример:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_allure_step.py
# эффект:@allure.stepхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import pytest
import allure

@allure.step("Шаг 1: вход пользователя")
def test_login():
    pass

@allure.step("Шаг 2: Проверка данных пользователя")
def test_check():
    test_login()


if __name__ == '__main__':
    pytest.main(["-s", "test_allure_step.py"])
  • Запустите команду и проверьте:
Язык кода:python
кодКоличество запусков:0
копировать
pytest -n auto --alluredir=allure test_allure_step.py
Язык кода:python
кодКоличество запусков:0
копировать
allure serve allure
  • После запуска происходит следующее:
    существование Вставьте сюда описание изображения
    существование Вставьте сюда описание изображения
    существование Вставьте сюда описание изображения
    существование Вставьте сюда описание изображения
  • Другой сценарий — вложение вариантов использования. step() Поддержка позиционных параметров и параметров ключевых слов;
  • следующее:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_allure_step1.py
# эффект:@allure.stepхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import pytest
import allure

@allure.step("Шаг 1: вход пользователя {0}, {passwd}")
def login(name, passwd):
    pass

@allure.step("Шаг 2: Проверка данных")
def check():
    login("zhang", "123456")

@allure.step("Шаг 3: Вход")
def test_case():
    check()

if __name__ == '__main__':
    pytest.main(["-s", "test_allure_step1.py"])
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения

2 allure.attach

  • allureОтчеты поддерживают отображение множества различных типов вложений.;
  • Использование:
Язык кода:python
кодКоличество запусков:0
копировать
allure.attach(body, name, attachment_type, extension) 
  • Описание параметра:
Язык кода:python
кодКоличество запусков:0
копировать
тело: содержимое вложения
имя: имя вложения
Attachment_type: тип вложения, да allure.attachment_type один из них
расширение: расширение вложения
  • иallure.attachment_typeТипы следующие,Вы можете просмотреть исходный код:
Язык кода:python
кодКоличество запусков:0
копировать
class AttachmentType(Enum):

    def __init__(self, mime_type, extension):
        self.mime_type = mime_type
        self.extension = extension

    TEXT = ("text/plain", "txt")
    CSV = ("text/csv", "csv")
    TSV = ("text/tab-separated-values", "tsv")
    URI_LIST = ("text/uri-list", "uri")

    HTML = ("text/html", "html")
    XML = ("application/xml", "xml")
    JSON = ("application/json", "json")
    YAML = ("application/yaml", "yaml")
    PCAP = ("application/vnd.tcpdump.pcap", "pcap")

    PNG = ("image/png", "png")
    JPG = ("image/jpg", "jpg")
    SVG = ("image/svg-xml", "svg")
    GIF = ("image/gif", "gif")
    BMP = ("image/bmp", "bmp")
    TIFF = ("image/tiff", "tiff")

    MP4 = ("video/mp4", "mp4")
    OGG = ("video/ogg", "ogg")
    WEBM = ("video/webm", "webm")

    PDF = ("application/pdf", "pdf")
  • Пример:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_allure_attach.py
# эффект:allure.attachхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure
import pytest

def test_login():
    allure.attach("user01,user02,user03", «Информация о пользователе», allure.attachment_type.TEXT)
    pass
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
  • allure.attach()Другой способ использования —:
Язык кода:python
кодКоличество запусков:0
копировать
allure.attach.file(source, name, attachment_type, extension)
  • Описание параметр:источник: путь к файлу тело: содержимое вложения имя: имя вложения Attachment_type: тип вложения, да allure.attachment_type один из них расширение: расширение вложения
  • Пример:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_allure_attach.py
# эффект:allure.attachхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure
import pytest

def test_login():
    allure.attach("user01,user02,user03", «Информация о пользователе», allure.attachment_type.TEXT)
    pass

def test_login_info():
    allure.attach.file("./user_info.csv", attachment_type=allure.attachment_type.CSV)
    pass
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения

3 @allure.description()

  • Добавьте более подробное описание варианта использования теста;
  • Формат::@allure.description(str),Аналогично добавлению ниже объявления функции """ """
  • Пример:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_allure_description.py
# эффект:@allure.descriptionхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure
import pytest

# Как использовать один
@allure.description("""
Основная цель этого варианта использования — проверка?
Ой, кстати, я не знаю, что делать! ! !
""")
def test_case01():
    num = 100 * (1 + 9)
    assert num == 1000

# Способ использования второй
def test_case02():
    """
    Это вариант использования!
    Этот вариант использования ничего не делает!
    Этот вариант использования представляет собой просто простую проверку~
    """
    pass
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения

4 @allure.title()

  • Заголовок, описывающий вариант использования,Может быть на китайском языке;
  • Формат::@allure.title(str)
  • следующее:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_allure_title.py
# эффект:@allure.titleхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure

@allure.title("Пользователь входит в систему как обычно")
def test_login01():
    pass

@allure.title("Имя пользователя неверное")
def test_login02():
    pass
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
  • кроме того,allure.title()Поддерживает передачу аргументов ключевого слова через заполнители.;
  • следующее:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_allure_title1.py
# эффект:@allure.titleхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure
import pytest

@allure.title("Вход пользователя")
@pytest.fixture
def test_login(request):
    args = request.param
    user = args["name"]
    pwd = args["password"]
    print(user, pwd, args)
    yield user, pwd

@allure.title("Обычный вход в систему, информация о пользователе: {test_login}")
@pytest.mark.parametrize("test_login", [
    {"name": "xiaoli", "password": "123456"},
    {"name": "laoli", "password": "123456"}], indirect=True)
def test_login_info(test_login):
    user, pwd = test_login
    allure.attach(f"Имя пользователя: {пользователь}, Пароль: {pwd}")
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения

5 @allure.link()、@allure.issue()、allure.testcase()

  • для того, чтобыallureОтчетность и некоторая системная интеграция,Может быстрее перейти по указанному адресу;
  • Исходный код:
Язык кода:python
кодКоличество запусков:0
копировать
def link(url, link_type=LinkType.LINK, name=None):
    return safely(plugin_manager.hook.decorate_as_link(url=url, link_type=link_type, name=name))
  • Описание параметра:
Язык кода:python
кодКоличество запусков:0
копировать
issue()иtestcase()На самом деле его еще называютдаlink(),Толькодаlink_typeнет то же самое
URL: ссылка для перехода;
name: необязательный параметр, отображает название отчета существованияallure, если он не передан, будет отображаться полная ссылка;
link_type: тип перехода; LINK, ISSUE, TEST_CASE, то есть ссылка доступа, ссылка на ошибку, ссылка на тестовый вариант использования;
Подвести итог:три методада Такой же,Толькодаlink_typeнет то же самое,Стили, отображаемые в отчетах Allure, различаются.
  • Пример:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_link_issue_testcase.py
# эффект:@allure.link()、@allure.issue()、@allure.testcase()изхарактеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure

@allure.link("https://blog.csdn.net/NoamaNelson")
def test_blog_link():
    pass

@allure.link("https://blog.csdn.net/NoamaNelson", name="Нажмите, чтобы просмотреть домашнюю страницу блога")
def test_blog_link1():
    pass

@allure.issue('https://bbs.csdn.net/forums/NoamaNelson', 'Технология полнофункционального тестирования Сообщество')
def test_blog_issue():
    pass

@allure.testcase("https://bbs.csdn.net/forums/NoamaNelson?category=10003&typeId=1566629", «адрес варианта использования теста»)
def test_blog_testcase():
    pass
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения

6 @allure.epic()、@allure.feature()、@allure.story()

  • allureиз三种标记Декоратор,Может отображаться в отчете о существовании;
  • @pytest.mark не будет отображатьсясуществоватьallureотчет;
  • эффект:
Язык кода:python
кодКоличество запусков:0
копировать
@allure.epic:внизда feature
@allure.feature: Описание функциональных точек, модуль ниже. story
@allure.story: История ниже. title
Язык кода:python
кодКоличество запусков:0
копировать
Уведомление:
story да feature подмножество.
  • Пример:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_epic_feature_story.py
# эффект:@allure.epic()、@allure.feature()、@allure.story()характеристика
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure

def test_case01():
    pass

@allure.story('epic01')
def test_case02():
    pass

@allure.story('story01')
def test_case03():
    pass

@allure.story('story02')
def test_case04():
    pass

@allure.feature('feature02')
@allure.story('story02')
def test_case05():
    pass
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения

7 @allure.severity

  • существовать allure В отчете можно увидеть количество дефектов на разных уровнях вариантов использования, то есть отмеченных уровнях вариантов использования. ;
  • Как использовать:
Язык кода:python
кодКоличество запусков:0
копировать
@allure.severity(allure.severity_level.xxx)
# ххх это уровень
  • например@allure.severity(allure.severity_level.TRIVIAL),Вы можете взглянуть на исходный код:
Язык кода:python
кодКоличество запусков:0
копировать
class Severity(str, Enum):
    BLOCKER = 'blocker'
    CRITICAL = 'critical'
    NORMAL = 'normal'
    MINOR = 'minor'
    TRIVIAL = 'trivial'
  • Как видно из вышеизложенного, существует 5 уровней, а именно:

блокировщик: дефект блокировки критический: серьезный дефект

нормальный: общие дефекты

незначительный: незначительный дефект

тривиально: незначительный недостаток

  • Пример:
Язык кода:python
кодКоличество запусков:0
копировать
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 28 марта 2023 г. 
# Имя файла: test_severity.py
# эффект:@allure.severity уровень варианта использования знака серьезности
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson

import allure

# @allure.severity(allure.severity_level.NORMAL)
@allure.severity("normal")
@allure.description("""Сценарий использования обычного уровня""")
def test_case01():
    print("Сценарий использования 01")

# @allure.severity(allure.severity_level.CRITICAL)
@allure.severity("critical")
@allure.description("""Сценарий использования критического уровня""")
def test_case02():
    print("Сценарий использования 02")

# @allure.severity(allure.severity_level.BLOCKER)
@allure.severity("blocker")
@allure.description("""Сценарий использования на уровне блокировщика""")
def test_case03():
    print("Сценарий использования 03")

# @allure.severity(allure.severity_level.MINOR)
@allure.severity("minor")
@allure.description("""Сценарий использования на второстепенном уровне""")
def test_case04():
    print("Сценарий использования 04")

# @allure.severity(allure.severity_level.TRIVIAL)
@allure.severity("trivial")
@allure.description("""Сценарий использования тривиального уровня""")
def test_case05():
    print("Сценарий использования 05")

@allure.description("""Нет отметки, по умолчанию normal""")
def test_case06():
    print("Сценарий использования 06")
существование Вставьте сюда описание изображения
существование Вставьте сюда описание изображения
  • Без отметки по умолчаниюnormal
    существование Вставьте сюда описание изображения
    существование Вставьте сюда описание изображения
  • Стиль диаграммы:
    существование Вставьте сюда описание изображения
    существование Вставьте сюда описание изображения
  • Вы также можете использовать параметры командной строки allure-severitiesВыберите, что необходимо запустить, в зависимости от приоритетатествариант использования,например:
Язык кода:python
кодКоличество запусков:0
копировать
pytest test_severity.py -sq --alluredir=./allure --allure-severities=blocker,critical
Язык кода:python
кодКоличество запусков:0
копировать
Вариант использования 02
.Используйте вариант 03
.
2 passed in 0.10s
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose