home.social

#pytest — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #pytest, aggregated by home.social.

fetched live
  1. I always have to look up how to properly configure a new #python project with #pytest, and every time I end up on something different.

    So to make things a bit easier for me in the future, I've made a reference of how and why a few common vanilla setups work. It's here:

    codeberg.org/adfoucart/pytest-

    And now I will probably forget that I wrote this and then have to look it up again in the future.

  2. mongo-bakery

    Biblioteca Python que traz pro mundo MongoDB a praticidade que o model_bakery trouxe pro Django: gera dados de teste realistas automaticamente (via Faker) para documentos MongoEngine, sem precisar escrever uma Factory pra cada Document da aplicação. Suporta sequências únicas, seeds reproduzíveis, documentos aninhados/referenciados e roda como plugin nativo do pytest. Projeto open source, com CI, cobertura de testes e documentação publicada.

    🔗 github.com/mongo-bakery/mongo_

    #Python #MongoDB #Faker #Pytest

  3. -Why don't you release a Python course if you're a Python developer? You have courses on everything except the language you actually use for work.-
    I said I wouldn't release anything until the skies darkened... and today there will be a total eclipse in my city.
    https://en.andros.dev/courses/ab396439/python/1/setting-up-the-environment/
    It compiles all the best practices, principles, and conventions I've learned throughout my career.
    - Tool installation.
    - Project management.
    - Creating advanced functions.
    - Testing.
    - Error handling.
    - Concurrency.
    - Dependencies.
    And much more.
    All with a functional approach without shying away from proper OOP practices.
    Go from amateur to expert. It's available in both Spanish and English.
    And best of all: free and no registration required.
    #python #programming #development #testing #uv #pytest #freesoftware #devs

  4. I'm adding pytest unit tests to my todo-linter. They're a simple port of the run-tests.sh script in the root, easy: worktree.ca/taffer/todo-linter

    If I run the tests in there individually, they each work. If I run then entire file, the first works and the rest fail.

    This was the most obvious way (to me) to write the tests; what pytest state detail am I missing and need to reset? I am confuse.

    #python #pytest

  5. Ваш UI-фреймворк уже написан. Используем возможности Playwright

    Приветствую, Хабр! Меня зовут Владислав Тимашенков, я занимаюсь автоматизацией тестирования в ГК Infowatch. В этой статье мы построим основу лаконичного фреймворка для UI-автотестов. Настроим запуск браузера, подготовим авторизацию, создадим Page Object и напишем тест. Здесь не будет лишних обёрток и сложной инфраструктуры, не будет даже ИИ и прочего хайпа. Только проверенные решения на базе Playwright , готовые к использованию. Главная идея — максимально использовать возможности самого Playwright, а не строить вокруг него собственный слой абстракций. Договоримся, что у нас уже установлены playwright со всеми зависимостями и pytest . Будем использовать браузер Chromium. Все примеры кода, приведенные в статье, используются в реальном проекте (но адаптированы для публикации). Их можно использовать в собственном фреймворке с минимальными изменениями.

    habr.com/ru/companies/infowatc

    #playwright #playwright_python #ui_automation #pytest

  6. Salve galera, caso alguém aqui trabalhe com Python usando MongoDB com o Mongoengine, fica a dica de uma lib para auxiliar com dados fake na hora de mockar dados para testes: pypi.org/project/mongo-bakery/ é um projeto inicial, mas já tá tomando forma!

    #Python #MongoDB #Mongoengine #Pytest #Mock #FakeData

  7. I bumped my code coverage to 3 decimals so I can actually see missed lines. Yes, I have made it a game to stay at 100.000% 😁

    codecov/project Successful in 1s — 100.000% (+0.000%) compared to dc4e96e

    #Code #Python #Pytest

  8. Inline-snapshot allows you to write domain specific snapshot functions, which is really useful when many tests follow the same pattern.

    Just use check(data). min_value and max_value are created when you run pytest.

    t.co/RC8fFmGB9C

  9. Python question: The docs on warning filters show the typical format

    action:message:category:module:line

    docs.python.org/3/library/warn

    In Pytest, I can use this format in the filterwarnings config option:

    docs.pytest.org/en/latest/refe

    But where is the actual Python API to pass these specs? In functions like warnings.filterwarnings, the components (action, message, category, ...) have to be passed separately, not as a long colon-separated string. 🤔

    docs.python.org/3/library/warn

    #Python #Pytest

  10. After #Python conferences in 🇮🇹/🇩🇪/🇵🇱 (and ~1.5k #pytest booklets gone), my conf season is almost over for the year.

    Next, I will be at the CH Open Workshop-Tage in 🇨🇭, for once not talking about pytest, but with a one-day course on Python Best Practices (German): pretalx.com/workshop-tage-2026

  11. Hypothesis: тесты, которые сами ищут контрпримеры к вашему коду

    Обычные тесты находят только ожидаемые ошибки. В статье разберём, как Hypothesis сам ищет контрпримеры и сокращает их до минимального сбоя.

    habr.com/ru/companies/otus/art

    #Hypothesis #propertybased_testing #тестирование_свойств #Python #автоматизация_тестирования #генерация_данных #контрпримеры #shrinking #statefulтестирование #pytest

  12. Did you know that you can use #PyTest 's plugin manager instance to check whether a particular plugin was loaded? You might have known that.

    And did you know that pytest plugins have no "canonical" name, and every plugin's name is literally whatever was passed while it was registered? So if a plugin was autoloaded, it's its entry point name. If it was loaded via `-p` or `PYTEST_PLUGINS`, it's whatever the argument was (i.e. entry point name in the first case, object reference in the second one). And if it was loaded via an explicit call to plugin loader, then it was whatever you passed to the plugin loader.

    github.com/syrupy-project/syru

  13. I published pytest-odoo 2.2.0

    Many contributions by petrus-v and yvaucher.

    Main feature: odoo-19.0 compatibility.

    github.com/camptocamp/pytest-o

  14. Grazie a #PyConIT 2026 per avermi coinvolta nell'#OpenLearningDay 🙏

    Avevo preparato un workshop introduttivo su #Python 🐍 e #TDD per chi parte da zero:
    🎤 Primi passi in Python con il TDD: dalle variabili al primo test

    Gli studenti però conoscevano già le basi di Python 😅

    Per fortuna avevo preparato anche slide in più su test e metodi: ci siamo concentrati lì, sulla parte TDD, con grande partecipazione 🎉

    github.com/bilardi/python-prot

    #TalksAndWorkshops #pytest #BestPractices

  15. Почему E2E-тесты флакают всё чаще и как с этим жить

    Почему, несмотря на накопленный опыт и современный инструментарий, число флаки‑тестов растёт год от года? Исследование BitRise 2025 года показало, что доля команд, которым приходится сталкиваться с флаки-тестами, выросла с 10% в 2022-м до 26% в 2025-м. Нестабильные тесты сильно бьют по рабочим процессам: из опроса 1600 человек в 2023 году стало ясно, что флаки-тесты съедают 8% рабочего времени, почти столько же, сколько занимает наладка и поддержка тестовых сред. Но реальный вред флаков гораздо больше: они подрывают доверие к здоровым тестам и ставят под вопрос всю автоматизацию. Вряд ли количество флаков растёт из-за того, что люди разучились писать атомарные тесты и правильно проектировать архитектуру приложений. Скорее проблема в том, что усложняется среда разработки и тестирования: - Больше этапов в пайплайнах - Более сложные рабочие процессы - Больше сторонних зависимостей Сложность среды, сторонние зависимости - всё это бьёт в первую очередь по E2E-тестам. Проблема в том, что компенсировать эти источники сложности может быть очень дорого. И именно об этом я хочу поговорить сегодня: насколько дорого обеспечить стабильность E2E-тестов?

    habr.com/ru/companies/testops_

    #тестирование #qa #automation #автоматизация #флаки #нестабильные_тесты #flaky #pytest

  16. Чтобы ваши тесты работали быстрее, нужен простой советский… xdist. Я измерил. Часть 2

    В первой части я ускорил большой интеграционный pytest-сьют с получаса до полутора минут за счёт инфраструктурных правок. Во второй проверяю следующий очевидный слой оптимизации — pytest-xdist. Результат оказался не магическим, но полезным: -n auto дал ещё ×3.4 локально и около ×2.7 в CI. В статье показываю, почему xdist не заменяет дешёвый setup, а только домножает его; как разводить БД и Redis по воркерам; где упираются соединения Postgres; и почему память Docker VM и тюнинг Postgres не сдвинули потолок.

    habr.com/ru/articles/1047134/

    #pytest #pytestxdist #python #xdist #интеграционные_тесты #ускорение_тестов #параллельное_тестирование #postgresql #sqlalchemy #redis

  17. Describe-style plugin for with - pytest-describe 3.2 has been released github.com/pytest-dev/pytest-d

  18. Держите LLM подальше от тестов чат-бота

    Держите LLM подальше от тестов чат-бота Кто тестировал чат-бота, знает: на одной реплике всё просто, а на третьей-четвёртой начинается боль. Бот должен помнить имя, которое вы назвали два хода назад, держать слоты и не сваливаться в «уточните ваш запрос» на ровном месте. И как только садишься это проверять, упираешься в развилку: чем, собственно, проверять ответы многоходового диалога.

    habr.com/ru/articles/1046277/

    #pytest #тестирование #чатботы #python #автотесты #CI #LLM #диалоговые_интерфейсы

  19. Ваши тесты медленные не из-за базы данных. Я измерил

    Есть устойчивое поверье: интеграционные тесты медленные, потому что ходят в настоящую базу. «Подними SQLite в памяти», «замокай репозитории», «не гоняй Postgres в CI» — стандартный набор советов. Мокать я не люблю, но крыть упрёк «настоящая база — это медленно» было нечем. Поэтому я сел, спрофилировал и померил: 3316 интеграционных тестов, прогон 30 минут. После трёх правок инфраструктуры — 109 секунд. База оказалась ни при чём, а совет «чисти базу через TRUNCATE, это быстрее DELETE» у меня работал ровно наоборот — обидно вдвойне, потому что эта рекомендация уже лежала в черновике моей следующей статьи.

    habr.com/ru/articles/1045923/

    #pytest #pytestasyncio #интеграционные_тесты #Python #sqlalchemy #postgresql #fixtures #asyncio #cprofile #event_loop

  20. Как тестировать HTTP-запросы к внешним сервисам в Python-приложениях: requests-mock, pytest-httpx и FastAPI

    Не всегда стоит патчить ответ от внешнего HTTP-сервиса через mocker.patch . В таких тестах приложение возвращает ожидаемый ответ, но важная часть логики остаётся непроверенной: какой URL собрал клиент, каким методом ушёл запрос, какое тело было отправлено и как обработался ответ внешнего сервиса. В статье показываю другой подход: мокать не метод клиента, а сам внешний HTTP-сервис. Для клиентов на requests используем requests-mock , для клиентов на httpx — pytest-httpx . Так тесты остаются быстрыми и без реальной сети, но при этом проходят через настоящий код клиента и позволяют проверять состояние фейкового внешнего сервиса, тем самым улучшая качество тестов.

    habr.com/ru/articles/1044280/

    #python #mock #pytest #testing #fastapi #django

  21. Настраиваем CI/CD в GitHub для Python-проекта с нуля

    Настройка CI/CD часто кажется новичкам чем-то сложным и доступным только DevOps-инженерам. На самом деле автоматизировать рутину Python-проекта можно всего за полчаса. В этой статье мы по шагам разберем, как с нуля настроить GitHub Actions для простого FastAPI-приложения: от автоматического запуска тестов и быстрого линтера Ruff до сборки Docker-образа и публикации его в Docker Hub.

    habr.com/ru/articles/1037002/

    #python #github_actions #docker #pytest #автоматизация #fastapi #туториал

  22. Как тестировать внешние API в Python: от DI-мока до настоящего HTTP-сервера

    Почти каждый сервис, который мы сегодня пишем, ходит куда-то наружу — платёжный шлюз, биллинг, чужой публичный API. И каждый раз, когда садимся писать тесты на этот код, упираемся в один и тот же вопрос: как протестировать клиента, не привлекая внимания санитаров выходя в реальный мир? Эта статья про то, как выбирать инструмент под эту задачу. Не абстрактно — на одном маленьком, но гордом настоящем сервисе catfact-demo-service , в tests/ которого рядом лежат пять способов протестировать одну и ту же интеграцию. К концу мы их сравним и аргументированно выберем тот, который оставили бы в production-проекте.

    habr.com/ru/articles/1034864/

    #python #pytest #тестирование #aiohttp #mock #интеграционные_тесты #http #dishka #fastapi #asyncly

  23. Основы тестирования и правила, которые помогают надёжно тестировать сложные приложения: примеры на Python

    За годы работы разработчиком я сталкивался с разными подходами к тестированию. В этой статье я хочу показать, какие практики кажутся мне неэффективными, и объяснить, как довольно просто писать надёжные тесты, которые дают и хорошее покрытие, и устойчивость. Статья может быть полезна не только Python-разработчикам, но и инженерам-программистам в целом.

    habr.com/ru/articles/1035978/

    #python #pytest #sql #testing #test_driven_development

  24. #today I am making a little progress on debugging my #buildingModel which includes learning how to do #pytest properly... #debugging #modelling