├── .coveragerc ├── .git-blame-ignore-revs ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── 1_bug_report.md │ ├── 2_feature_request.md │ └── config.yml ├── PULL_REQUEST_TEMPLATE.md ├── chronographer.yml ├── config.yml ├── dependabot.yml ├── labels.toml ├── patchback.yml └── workflows │ ├── deploy.yml │ ├── prepare-release-pr.yml │ ├── stale.yml │ ├── test.yml │ └── update-plugin-list.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .readthedocs.yaml ├── AUTHORS ├── CHANGELOG.rst ├── CITATION ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.rst ├── LICENSE ├── OPENCOLLECTIVE.rst ├── README.rst ├── RELEASING.rst ├── TIDELIFT.rst ├── bench ├── bench.py ├── bench_argcomplete.py ├── empty.py ├── manyparam.py ├── skip.py ├── unit_test.py └── xunit.py ├── changelog ├── .gitignore ├── 13461.bugfix.rst ├── README.rst └── _template.rst ├── codecov.yml ├── doc └── en │ ├── Makefile │ ├── _static │ ├── pytest-custom.css │ └── pytest1.png │ ├── _templates │ └── links.html │ ├── adopt.rst │ ├── announce │ ├── index.rst │ ├── release-2.0.0.rst │ ├── release-2.0.1.rst │ ├── release-2.0.2.rst │ ├── release-2.0.3.rst │ ├── release-2.1.0.rst │ ├── release-2.1.1.rst │ ├── release-2.1.2.rst │ ├── release-2.1.3.rst │ ├── release-2.2.0.rst │ ├── release-2.2.1.rst │ ├── release-2.2.2.rst │ ├── release-2.2.4.rst │ ├── release-2.3.0.rst │ ├── release-2.3.1.rst │ ├── release-2.3.2.rst │ ├── release-2.3.3.rst │ ├── release-2.3.4.rst │ ├── release-2.3.5.rst │ ├── release-2.4.0.rst │ ├── release-2.4.1.rst │ ├── release-2.4.2.rst │ ├── release-2.5.0.rst │ ├── release-2.5.1.rst │ ├── release-2.5.2.rst │ ├── release-2.6.0.rst │ ├── release-2.6.1.rst │ ├── release-2.6.2.rst │ ├── release-2.6.3.rst │ ├── release-2.7.0.rst │ ├── release-2.7.1.rst │ ├── release-2.7.2.rst │ ├── release-2.8.2.rst │ ├── release-2.8.3.rst │ ├── release-2.8.4.rst │ ├── release-2.8.5.rst │ ├── release-2.8.6.rst │ ├── release-2.8.7.rst │ ├── release-2.9.0.rst │ ├── release-2.9.1.rst │ ├── release-2.9.2.rst │ ├── release-3.0.0.rst │ ├── release-3.0.1.rst │ ├── release-3.0.2.rst │ ├── release-3.0.3.rst │ ├── release-3.0.4.rst │ ├── release-3.0.5.rst │ ├── release-3.0.6.rst │ ├── release-3.0.7.rst │ ├── release-3.1.0.rst │ ├── release-3.1.1.rst │ ├── release-3.1.2.rst │ ├── release-3.1.3.rst │ ├── release-3.10.0.rst │ ├── release-3.10.1.rst │ ├── release-3.2.0.rst │ ├── release-3.2.1.rst │ ├── release-3.2.2.rst │ ├── release-3.2.3.rst │ ├── release-3.2.4.rst │ ├── release-3.2.5.rst │ ├── release-3.3.0.rst │ ├── release-3.3.1.rst │ ├── release-3.3.2.rst │ ├── release-3.4.0.rst │ ├── release-3.4.1.rst │ ├── release-3.4.2.rst │ ├── release-3.5.0.rst │ ├── release-3.5.1.rst │ ├── release-3.6.0.rst │ ├── release-3.6.1.rst │ ├── release-3.6.2.rst │ ├── release-3.6.3.rst │ ├── release-3.6.4.rst │ ├── release-3.7.0.rst │ ├── release-3.7.1.rst │ ├── release-3.7.2.rst │ ├── release-3.7.3.rst │ ├── release-3.7.4.rst │ ├── release-3.8.0.rst │ ├── release-3.8.1.rst │ ├── release-3.8.2.rst │ ├── release-3.9.0.rst │ ├── release-3.9.1.rst │ ├── release-3.9.2.rst │ ├── release-3.9.3.rst │ ├── release-4.0.0.rst │ ├── release-4.0.1.rst │ ├── release-4.0.2.rst │ ├── release-4.1.0.rst │ ├── release-4.1.1.rst │ ├── release-4.2.0.rst │ ├── release-4.2.1.rst │ ├── release-4.3.0.rst │ ├── release-4.3.1.rst │ ├── release-4.4.0.rst │ ├── release-4.4.1.rst │ ├── release-4.4.2.rst │ ├── release-4.5.0.rst │ ├── release-4.6.0.rst │ ├── release-4.6.1.rst │ ├── release-4.6.2.rst │ ├── release-4.6.3.rst │ ├── release-4.6.4.rst │ ├── release-4.6.5.rst │ ├── release-4.6.6.rst │ ├── release-4.6.7.rst │ ├── release-4.6.8.rst │ ├── release-4.6.9.rst │ ├── release-5.0.0.rst │ ├── release-5.0.1.rst │ ├── release-5.1.0.rst │ ├── release-5.1.1.rst │ ├── release-5.1.2.rst │ ├── release-5.1.3.rst │ ├── release-5.2.0.rst │ ├── release-5.2.1.rst │ ├── release-5.2.2.rst │ ├── release-5.2.3.rst │ ├── release-5.2.4.rst │ ├── release-5.3.0.rst │ ├── release-5.3.1.rst │ ├── release-5.3.2.rst │ ├── release-5.3.3.rst │ ├── release-5.3.4.rst │ ├── release-5.3.5.rst │ ├── release-5.4.0.rst │ ├── release-5.4.1.rst │ ├── release-5.4.2.rst │ ├── release-5.4.3.rst │ ├── release-6.0.0.rst │ ├── release-6.0.0rc1.rst │ ├── release-6.0.1.rst │ ├── release-6.0.2.rst │ ├── release-6.1.0.rst │ ├── release-6.1.1.rst │ ├── release-6.1.2.rst │ ├── release-6.2.0.rst │ ├── release-6.2.1.rst │ ├── release-6.2.2.rst │ ├── release-6.2.3.rst │ ├── release-6.2.4.rst │ ├── release-6.2.5.rst │ ├── release-7.0.0.rst │ ├── release-7.0.0rc1.rst │ ├── release-7.0.1.rst │ ├── release-7.1.0.rst │ ├── release-7.1.1.rst │ ├── release-7.1.2.rst │ ├── release-7.1.3.rst │ ├── release-7.2.0.rst │ ├── release-7.2.1.rst │ ├── release-7.2.2.rst │ ├── release-7.3.0.rst │ ├── release-7.3.1.rst │ ├── release-7.3.2.rst │ ├── release-7.4.0.rst │ ├── release-7.4.1.rst │ ├── release-7.4.2.rst │ ├── release-7.4.3.rst │ ├── release-7.4.4.rst │ ├── release-8.0.0.rst │ ├── release-8.0.0rc1.rst │ ├── release-8.0.0rc2.rst │ ├── release-8.0.1.rst │ ├── release-8.0.2.rst │ ├── release-8.1.0.rst │ ├── release-8.1.1.rst │ ├── release-8.1.2.rst │ ├── release-8.2.0.rst │ ├── release-8.2.1.rst │ ├── release-8.2.2.rst │ ├── release-8.3.0.rst │ ├── release-8.3.1.rst │ ├── release-8.3.2.rst │ ├── release-8.3.3.rst │ ├── release-8.3.4.rst │ ├── release-8.3.5.rst │ ├── release-8.4.0.rst │ └── sprint2016.rst │ ├── backwards-compatibility.rst │ ├── broken-dep-constraints.txt │ ├── builtin.rst │ ├── changelog.rst │ ├── conf.py │ ├── conftest.py │ ├── contact.rst │ ├── contents.rst │ ├── contributing.rst │ ├── deprecations.rst │ ├── development_guide.rst │ ├── example │ ├── assertion │ │ ├── failure_demo.py │ │ ├── global_testmodule_config │ │ │ ├── conftest.py │ │ │ └── test_hello_world.py │ │ ├── test_failures.py │ │ └── test_setup_flow_example.py │ ├── attic.rst │ ├── conftest.py │ ├── customdirectory.rst │ ├── customdirectory │ │ ├── conftest.py │ │ ├── pytest.ini │ │ └── tests │ │ │ ├── manifest.json │ │ │ ├── test_first.py │ │ │ ├── test_second.py │ │ │ └── test_third.py │ ├── fixtures │ │ ├── fixture_availability.svg │ │ ├── fixture_availability_plugins.svg │ │ ├── test_fixtures_order_autouse.py │ │ ├── test_fixtures_order_autouse.svg │ │ ├── test_fixtures_order_autouse_flat.svg │ │ ├── test_fixtures_order_autouse_multiple_scopes.py │ │ ├── test_fixtures_order_autouse_multiple_scopes.svg │ │ ├── test_fixtures_order_autouse_temp_effects.py │ │ ├── test_fixtures_order_autouse_temp_effects.svg │ │ ├── test_fixtures_order_dependencies.py │ │ ├── test_fixtures_order_dependencies.svg │ │ ├── test_fixtures_order_dependencies_flat.svg │ │ ├── test_fixtures_order_dependencies_unclear.svg │ │ ├── test_fixtures_order_scope.py │ │ ├── test_fixtures_order_scope.svg │ │ ├── test_fixtures_request_different_scope.py │ │ └── test_fixtures_request_different_scope.svg │ ├── index.rst │ ├── markers.rst │ ├── multipython.py │ ├── nonpython.rst │ ├── nonpython │ │ ├── __init__.py │ │ ├── conftest.py │ │ └── test_simple.yaml │ ├── parametrize.rst │ ├── pythoncollection.py │ ├── pythoncollection.rst │ ├── reportingdemo.rst │ ├── simple.rst │ ├── special.rst │ └── xfail_demo.py │ ├── explanation │ ├── anatomy.rst │ ├── ci.rst │ ├── fixtures.rst │ ├── flaky.rst │ ├── goodpractices.rst │ ├── index.rst │ ├── pythonpath.rst │ └── types.rst │ ├── funcarg_compare.rst │ ├── funcargs.rst │ ├── getting-started.rst │ ├── historical-notes.rst │ ├── history.rst │ ├── how-to │ ├── assert.rst │ ├── bash-completion.rst │ ├── cache.rst │ ├── capture-stdout-stderr.rst │ ├── capture-warnings.rst │ ├── doctest.rst │ ├── existingtestsuite.rst │ ├── failures.rst │ ├── fixtures.rst │ ├── index.rst │ ├── logging.rst │ ├── mark.rst │ ├── monkeypatch.rst │ ├── output.rst │ ├── parametrize.rst │ ├── plugins.rst │ ├── skipping.rst │ ├── tmp_path.rst │ ├── unittest.rst │ ├── usage.rst │ ├── writing_hook_functions.rst │ ├── writing_plugins.rst │ └── xunit_setup.rst │ ├── img │ ├── cramer2.png │ ├── favicon.png │ ├── freiburg2.jpg │ ├── gaynor3.png │ ├── keleshev.png │ ├── pullrequest.png │ ├── pylib.png │ ├── pytest_logo_curves.svg │ └── theuni.png │ ├── index.rst │ ├── license.rst │ ├── naming20.rst │ ├── proposals │ └── parametrize_with_fixtures.rst │ ├── pytest.ini │ ├── recwarn.rst │ ├── reference │ ├── customize.rst │ ├── exit-codes.rst │ ├── fixtures.rst │ ├── index.rst │ ├── plugin_list.rst │ └── reference.rst │ ├── requirements.txt │ ├── sponsor.rst │ ├── talks.rst │ ├── tidelift.rst │ └── yieldfixture.rst ├── extra └── get_issues.py ├── pyproject.toml ├── scripts ├── .gitignore ├── generate-gh-release-notes.py ├── prepare-release-pr.py ├── release.major.rst ├── release.minor.rst ├── release.patch.rst ├── release.pre.rst ├── release.py └── update-plugin-list.py ├── src ├── _pytest │ ├── __init__.py │ ├── _argcomplete.py │ ├── _code │ │ ├── __init__.py │ │ ├── code.py │ │ └── source.py │ ├── _io │ │ ├── __init__.py │ │ ├── pprint.py │ │ ├── saferepr.py │ │ ├── terminalwriter.py │ │ └── wcwidth.py │ ├── _py │ │ ├── __init__.py │ │ ├── error.py │ │ └── path.py │ ├── assertion │ │ ├── __init__.py │ │ ├── rewrite.py │ │ ├── truncate.py │ │ └── util.py │ ├── cacheprovider.py │ ├── capture.py │ ├── compat.py │ ├── config │ │ ├── __init__.py │ │ ├── argparsing.py │ │ ├── compat.py │ │ ├── exceptions.py │ │ └── findpaths.py │ ├── debugging.py │ ├── deprecated.py │ ├── doctest.py │ ├── faulthandler.py │ ├── fixtures.py │ ├── freeze_support.py │ ├── helpconfig.py │ ├── hookspec.py │ ├── junitxml.py │ ├── legacypath.py │ ├── logging.py │ ├── main.py │ ├── mark │ │ ├── __init__.py │ │ ├── expression.py │ │ └── structures.py │ ├── monkeypatch.py │ ├── nodes.py │ ├── outcomes.py │ ├── pastebin.py │ ├── pathlib.py │ ├── py.typed │ ├── pytester.py │ ├── pytester_assertions.py │ ├── python.py │ ├── python_api.py │ ├── raises.py │ ├── recwarn.py │ ├── reports.py │ ├── runner.py │ ├── scope.py │ ├── setuponly.py │ ├── setupplan.py │ ├── skipping.py │ ├── stash.py │ ├── stepwise.py │ ├── terminal.py │ ├── threadexception.py │ ├── timing.py │ ├── tmpdir.py │ ├── tracemalloc.py │ ├── unittest.py │ ├── unraisableexception.py │ ├── warning_types.py │ └── warnings.py ├── py.py └── pytest │ ├── __init__.py │ ├── __main__.py │ └── py.typed ├── testing ├── _py │ └── test_local.py ├── acceptance_test.py ├── code │ ├── test_code.py │ ├── test_excinfo.py │ └── test_source.py ├── conftest.py ├── deprecated_test.py ├── example_scripts │ ├── README.rst │ ├── __init__.py │ ├── acceptance │ │ └── fixture_mock_integration.py │ ├── collect │ │ ├── collect_init_tests │ │ │ ├── pytest.ini │ │ │ └── tests │ │ │ │ ├── __init__.py │ │ │ │ └── test_foo.py │ │ ├── package_infinite_recursion │ │ │ ├── __init__.pyi │ │ │ ├── conftest.py │ │ │ └── tests │ │ │ │ ├── __init__.py │ │ │ │ └── test_basic.py │ │ └── package_init_given_as_arg │ │ │ └── pkg │ │ │ ├── __init__.py │ │ │ └── test_foo.py │ ├── config │ │ └── collect_pytest_prefix │ │ │ ├── __init__.pyi │ │ │ ├── conftest.py │ │ │ └── test_foo.py │ ├── conftest_usageerror │ │ ├── __init__.pyi │ │ └── conftest.py │ ├── customdirectory │ │ ├── conftest.py │ │ ├── pytest.ini │ │ └── tests │ │ │ ├── manifest.json │ │ │ ├── test_first.py │ │ │ ├── test_second.py │ │ │ └── test_third.py │ ├── dataclasses │ │ ├── test_compare_dataclasses.py │ │ ├── test_compare_dataclasses_field_comparison_off.py │ │ ├── test_compare_dataclasses_verbose.py │ │ ├── test_compare_dataclasses_with_custom_eq.py │ │ ├── test_compare_initvar.py │ │ ├── test_compare_recursive_dataclasses.py │ │ └── test_compare_two_different_dataclasses.py │ ├── doctest │ │ └── main_py │ │ │ ├── __main__.py │ │ │ └── test_normal_module.py │ ├── fixtures │ │ ├── custom_item │ │ │ ├── __init__.pyi │ │ │ ├── conftest.py │ │ │ └── foo │ │ │ │ ├── __init__.py │ │ │ │ └── test_foo.py │ │ ├── fill_fixtures │ │ │ ├── test_conftest_funcargs_only_available_in_subdir │ │ │ │ ├── sub1 │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── conftest.py │ │ │ │ │ └── test_in_sub1.py │ │ │ │ └── sub2 │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── conftest.py │ │ │ │ │ └── test_in_sub2.py │ │ │ ├── test_detect_recursive_dependency_error.py │ │ │ ├── test_extend_fixture_conftest_conftest │ │ │ │ ├── __init__.pyi │ │ │ │ ├── conftest.py │ │ │ │ └── pkg │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── conftest.py │ │ │ │ │ └── test_spam.py │ │ │ ├── test_extend_fixture_conftest_module │ │ │ │ ├── __init__.pyi │ │ │ │ ├── conftest.py │ │ │ │ └── test_extend_fixture_conftest_module.py │ │ │ ├── test_extend_fixture_module_class.py │ │ │ ├── test_funcarg_basic.py │ │ │ ├── test_funcarg_lookup_classlevel.py │ │ │ ├── test_funcarg_lookup_modulelevel.py │ │ │ └── test_funcarg_lookupfails.py │ │ ├── test_fixture_named_request.py │ │ └── test_getfixturevalue_dynamic.py │ ├── issue88_initial_file_multinodes │ │ ├── __init__.pyi │ │ ├── conftest.py │ │ └── test_hello.py │ ├── issue_519.py │ ├── junit-10.xsd │ ├── marks │ │ └── marks_considered_keywords │ │ │ ├── __init__.pyi │ │ │ ├── conftest.py │ │ │ └── test_marks_as_keywords.py │ ├── perf_examples │ │ └── collect_stats │ │ │ ├── .gitignore │ │ │ ├── generate_folders.py │ │ │ └── template_test.py │ ├── pytest.ini │ ├── tmpdir │ │ └── tmp_path_fixture.py │ ├── unittest │ │ ├── test_parametrized_fixture_error_message.py │ │ ├── test_setup_skip.py │ │ ├── test_setup_skip_class.py │ │ ├── test_setup_skip_module.py │ │ ├── test_unittest_asyncio.py │ │ ├── test_unittest_asynctest.py │ │ └── test_unittest_plain_async.py │ └── warnings │ │ ├── test_group_warnings_by_message.py │ │ └── test_group_warnings_by_message_summary │ │ ├── test_1.py │ │ └── test_2.py ├── examples │ └── test_issue519.py ├── freeze │ ├── .gitignore │ ├── create_executable.py │ ├── runtests_script.py │ ├── tests │ │ ├── test_doctest.txt │ │ └── test_trivial.py │ └── tox_run.py ├── io │ ├── test_pprint.py │ ├── test_saferepr.py │ ├── test_terminalwriter.py │ └── test_wcwidth.py ├── logging │ ├── test_fixture.py │ ├── test_formatter.py │ └── test_reporting.py ├── plugins_integration │ ├── .gitignore │ ├── README.rst │ ├── bdd_wallet.feature │ ├── bdd_wallet.py │ ├── django_settings.py │ ├── pytest.ini │ ├── pytest_anyio_integration.py │ ├── pytest_asyncio_integration.py │ ├── pytest_mock_integration.py │ ├── pytest_rerunfailures_integration.py │ ├── pytest_trio_integration.py │ ├── pytest_twisted_integration.py │ ├── requirements.txt │ └── simple_integration.py ├── python │ ├── approx.py │ ├── collect.py │ ├── fixtures.py │ ├── integration.py │ ├── metafunc.py │ ├── raises.py │ ├── raises_group.py │ └── show_fixtures_per_test.py ├── test_argcomplete.py ├── test_assertion.py ├── test_assertrewrite.py ├── test_cacheprovider.py ├── test_capture.py ├── test_collect_imported_tests.py ├── test_collection.py ├── test_compat.py ├── test_config.py ├── test_conftest.py ├── test_debugging.py ├── test_doctest.py ├── test_entry_points.py ├── test_error_diffs.py ├── test_faulthandler.py ├── test_findpaths.py ├── test_helpconfig.py ├── test_junitxml.py ├── test_legacypath.py ├── test_link_resolve.py ├── test_main.py ├── test_mark.py ├── test_mark_expression.py ├── test_meta.py ├── test_monkeypatch.py ├── test_nodes.py ├── test_parseopt.py ├── test_pastebin.py ├── test_pathlib.py ├── test_pluginmanager.py ├── test_pytester.py ├── test_python_path.py ├── test_recwarn.py ├── test_reports.py ├── test_runner.py ├── test_runner_xunit.py ├── test_scope.py ├── test_session.py ├── test_setuponly.py ├── test_setupplan.py ├── test_skipping.py ├── test_stash.py ├── test_stepwise.py ├── test_terminal.py ├── test_threadexception.py ├── test_tmpdir.py ├── test_unittest.py ├── test_unraisableexception.py ├── test_warning_types.py ├── test_warnings.py ├── typing_checks.py └── typing_raises_group.py └── tox.ini /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | include = 3 | src/* 4 | testing/* 5 | */lib/python*/site-packages/_pytest/* 6 | */lib/python*/site-packages/pytest.py 7 | */pypy*/site-packages/_pytest/* 8 | */pypy*/site-packages/pytest.py 9 | *\Lib\site-packages\_pytest\* 10 | *\Lib\site-packages\pytest.py 11 | parallel = 1 12 | branch = 1 13 | 14 | [paths] 15 | source = src/ 16 | */lib/python*/site-packages/ 17 | */pypy*/site-packages/ 18 | *\Lib\site-packages\ 19 | 20 | [report] 21 | skip_covered = True 22 | show_missing = True 23 | exclude_lines = 24 | \#\s*pragma: no cover 25 | ^\s*raise NotImplementedError\b 26 | ^\s*return NotImplemented\b 27 | ^\s*assert False(,|$) 28 | ^\s*assert_never\( 29 | 30 | ^\s*if TYPE_CHECKING: 31 | ^\s*@overload( |$) 32 | ^\s*def .+: \.\.\.$ 33 | 34 | ^\s*@pytest\.mark\.xfail 35 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # List of revisions that can be ignored with git-blame(1). 2 | # 3 | # See `blame.ignoreRevsFile` in git-config(1) to enable it by default, or 4 | # use it with `--ignore-revs-file` manually with git-blame. 5 | # 6 | # To "install" it: 7 | # 8 | # git config --local blame.ignoreRevsFile .git-blame-ignore-revs 9 | 10 | # run black 11 | 703e4b11ba76171eccd3f13e723c47b810ded7ef 12 | # switched to src layout 13 | eaa882f3d5340956beb176aa1753e07e3f3f2190 14 | # pre-commit run pyupgrade --all-files 15 | a91fe1feddbded535a4322ab854429e3a3961fb4 16 | # move node base classes from main to nodes 17 | afc607cfd81458d4e4f3b1f3cf8cc931b933907e 18 | # [?] split most fixture related code into own plugin 19 | 8c49561470708761f7321504f5e8343811be87ac 20 | # run pyupgrade 21 | 9aacb4635e81edd6ecf281d4f6c0cfc8e94ab301 22 | # run blacken-docs 23 | 5f95dce95602921a70bfbc7d8de2f7712c5e4505 24 | # ran pyupgrade-docs again 25 | 75d0b899bbb56d6849e9d69d83a9426ed3f43f8b 26 | # move argument parser to own file 27 | c9df77cbd6a365dcb73c39618e4842711817e871 28 | # Replace reorder-python-imports by isort due to black incompatibility (#11896) 29 | 8b54596639f41dfac070030ef20394b9001fe63c 30 | # Run blacken-docs with black's 2024's style 31 | 4546d5445aaefe6a03957db028c263521dfb5c4b 32 | # Migration to ruff / ruff format 33 | 4588653b2497ed25976b7aaff225b889fb476756 34 | # Use format specifiers instead of percent format 35 | 4788165e69d08e10fc6b9c0124083fb358e2e9b0 36 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.bat text eol=crlf 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # info: 2 | # * https://help.github.com/en/articles/displaying-a-sponsor-button-in-your-repository 3 | # * https://tidelift.com/subscription/how-to-connect-tidelift-with-github 4 | github: pytest-dev 5 | tidelift: pypi/pytest 6 | open_collective: pytest 7 | thanks_dev: u/gh/pytest-dev 8 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/1_bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🐛 Bug Report 3 | about: Report errors and problems 4 | 5 | --- 6 | 7 | 12 | 13 | - [ ] a detailed description of the bug or problem you are having 14 | - [ ] output of `pip list` from the virtual environment you are using 15 | - [ ] pytest and operating system versions 16 | - [ ] minimal example if possible 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/2_feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🚀 Feature Request 3 | about: Ideas for new features and improvements 4 | 5 | --- 6 | 7 | 12 | 13 | #### What's the problem this feature will solve? 14 | 15 | 16 | #### Describe the solution you'd like 17 | 18 | 19 | 20 | 21 | #### Alternative Solutions 22 | 23 | 24 | #### Additional context 25 | 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: ❓ Support Question 4 | url: https://github.com/pytest-dev/pytest/discussions 5 | about: Use GitHub's new Discussions feature for questions 6 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /.github/chronographer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | branch-protection-check-name: Changelog entry 4 | action-hints: 5 | check-title-prefix: "Chronographer: " 6 | external-docs-url: >- 7 | https://docs.pytest.org/en/latest/contributing.html#preparing-pull-requests 8 | inline-markdown: >- 9 | See 10 | https://docs.pytest.org/en/latest/contributing.html#preparing-pull-requests 11 | for details. 12 | enforce-name: 13 | suffix: .rst 14 | exclude: 15 | humans: 16 | - pyup-bot 17 | labels: 18 | skip-changelog: skip news 19 | 20 | ... 21 | -------------------------------------------------------------------------------- /.github/config.yml: -------------------------------------------------------------------------------- 1 | rtd: 2 | project: pytest 3 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: pip 4 | directory: "/testing/plugins_integration" 5 | schedule: 6 | interval: weekly 7 | time: "03:00" 8 | open-pull-requests-limit: 10 9 | allow: 10 | - dependency-type: direct 11 | - dependency-type: indirect 12 | - package-ecosystem: github-actions 13 | directory: / 14 | schedule: 15 | interval: weekly 16 | time: "03:00" 17 | open-pull-requests-limit: 10 18 | -------------------------------------------------------------------------------- /.github/patchback.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | backport_branch_prefix: patchback/backports/ 4 | backport_label_prefix: 'backport ' # IMPORTANT: the labels are space-delimited 5 | # target_branch_prefix: '' # The project's backport branches are non-prefixed 6 | 7 | ... 8 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: close needs-information issues 2 | on: 3 | schedule: 4 | - cron: "30 1 * * *" 5 | workflow_dispatch: 6 | 7 | jobs: 8 | close-issues: 9 | runs-on: ubuntu-latest 10 | permissions: 11 | issues: write 12 | steps: 13 | - uses: actions/stale@v9 14 | with: 15 | debug-only: false 16 | days-before-issue-stale: 14 17 | days-before-issue-close: 7 18 | only-labels: "status: needs information" 19 | stale-issue-label: "stale" 20 | stale-issue-message: "This issue is stale because it has the `status: needs information` label and requested follow-up information was not provided for 14 days." 21 | close-issue-message: "This issue was closed because it has the `status: needs information` label and follow-up information has not been provided for 7 days since being marked as stale." 22 | days-before-pr-stale: -1 23 | days-before-pr-close: -1 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Automatically generated by `hgimportsvn` 2 | .svn 3 | .hgsvn 4 | 5 | # Ignore local virtualenvs 6 | lib/ 7 | bin/ 8 | include/ 9 | .Python/ 10 | 11 | # These lines are suggested according to the svn:ignore property 12 | # Feel free to enable them by uncommenting them 13 | *.pyc 14 | *.pyo 15 | *.swp 16 | *.class 17 | *.orig 18 | *~ 19 | .hypothesis/ 20 | 21 | # autogenerated 22 | src/_pytest/_version.py 23 | # setuptools 24 | .eggs/ 25 | 26 | doc/*/_build 27 | doc/*/.doctrees 28 | build/ 29 | dist/ 30 | *.egg-info 31 | htmlcov/ 32 | issue/ 33 | env/ 34 | .env/ 35 | .venv/ 36 | /pythonenv*/ 37 | 3rdparty/ 38 | .tox 39 | .cache 40 | .pytest_cache 41 | .mypy_cache 42 | .coverage 43 | .coverage.* 44 | coverage.xml 45 | .ropeproject 46 | .idea 47 | .hypothesis 48 | .pydevproject 49 | .project 50 | .settings 51 | .vscode 52 | __pycache__/ 53 | .python-version 54 | 55 | # generated by pip 56 | pip-wheel-metadata/ 57 | 58 | # pytest debug logs generated via --debug 59 | pytestdebug.log 60 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | python: 4 | install: 5 | # Install pytest first, then doc/en/requirements.txt. 6 | # This order is important to honor any pins in doc/en/requirements.txt 7 | # when the pinned library is also a dependency of pytest. 8 | - method: pip 9 | path: . 10 | - requirements: doc/en/requirements.txt 11 | 12 | sphinx: 13 | configuration: doc/en/conf.py 14 | fail_on_warning: true 15 | 16 | build: 17 | os: ubuntu-24.04 18 | tools: 19 | python: >- 20 | 3.12 21 | apt_packages: 22 | - inkscape 23 | jobs: 24 | post_checkout: 25 | - git fetch --unshallow || true 26 | - git fetch --tags || true 27 | 28 | formats: 29 | - epub 30 | - pdf 31 | - htmlzip 32 | -------------------------------------------------------------------------------- /CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ========= 2 | Changelog 3 | ========= 4 | 5 | The pytest CHANGELOG is located `here `__. 6 | 7 | The source document can be found at: https://github.com/pytest-dev/pytest/blob/main/doc/en/changelog.rst 8 | -------------------------------------------------------------------------------- /CITATION: -------------------------------------------------------------------------------- 1 | NOTE: Change "x.y" by the version you use. If you are unsure about which version 2 | you are using run: `pip show pytest`. Do not include the patch number (i.e., z in x.y.z) 3 | 4 | Text: 5 | 6 | [pytest] pytest x.y, 2004 7 | Krekel et al., https://github.com/pytest-dev/pytest 8 | 9 | BibLaTeX: 10 | 11 | @software{pytest, 12 | title = {pytest x.y}, 13 | author = {Holger Krekel and Bruno Oliveira and Ronny Pfannschmidt and Floris Bruynooghe and Brianna Laugher and Florian Bruhin}, 14 | year = {2004}, 15 | version = {x.y}, 16 | url = {https://github.com/pytest-dev/pytest}, 17 | note = {Contributors: Holger Krekel and Bruno Oliveira and Ronny Pfannschmidt and Floris Bruynooghe and Brianna Laugher and Florian Bruhin and others} 18 | } 19 | 20 | BibTeX: 21 | 22 | @misc{pytest, 23 | author = {Holger Krekel and Bruno Oliveira and Ronny Pfannschmidt and Floris Bruynooghe and Brianna Laugher and Florian Bruhin}, 24 | title = {pytest x.y}, 25 | year = {2004}, 26 | howpublished = {\url{https://github.com/pytest-dev/pytest}}, 27 | note = {Version x.y. Contributors include Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin, and others.} 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2004 Holger Krekel and others 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | of the Software, and to permit persons to whom the Software is furnished to do 10 | so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /bench/bench.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sys 4 | 5 | 6 | if __name__ == "__main__": 7 | import cProfile 8 | import pstats 9 | 10 | import pytest # noqa: F401 11 | 12 | script = sys.argv[1:] if len(sys.argv) > 1 else ["empty.py"] 13 | cProfile.run(f"pytest.cmdline.main({script!r})", "prof") 14 | p = pstats.Stats("prof") 15 | p.strip_dirs() 16 | p.sort_stats("cumulative") 17 | print(p.print_stats(500)) 18 | -------------------------------------------------------------------------------- /bench/bench_argcomplete.py: -------------------------------------------------------------------------------- 1 | # 10000 iterations, just for relative comparison 2 | # 2.7.5 3.3.2 3 | # FilesCompleter 75.1109 69.2116 4 | # FastFilesCompleter 0.7383 1.0760 5 | from __future__ import annotations 6 | 7 | import timeit 8 | 9 | 10 | imports = [ 11 | "from argcomplete.completers import FilesCompleter as completer", 12 | "from _pytest._argcomplete import FastFilesCompleter as completer", 13 | ] 14 | 15 | count = 1000 # only a few seconds 16 | setup = "%s\nfc = completer()" 17 | run = 'fc("/d")' 18 | 19 | 20 | if __name__ == "__main__": 21 | print(timeit.timeit(run, setup=setup % imports[0], number=count)) 22 | print(timeit.timeit(run, setup=setup % imports[1], number=count)) 23 | -------------------------------------------------------------------------------- /bench/empty.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | for i in range(1000): 5 | exec(f"def test_func_{i}(): pass") 6 | -------------------------------------------------------------------------------- /bench/manyparam.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture(scope="module", params=range(966)) 7 | def foo(request): 8 | return request.param 9 | 10 | 11 | def test_it(foo): 12 | pass 13 | 14 | 15 | def test_it2(foo): 16 | pass 17 | -------------------------------------------------------------------------------- /bench/skip.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | SKIP = True 7 | 8 | 9 | @pytest.mark.parametrize("x", range(5000)) 10 | def test_foo(x): 11 | if SKIP: 12 | pytest.skip("heh") 13 | -------------------------------------------------------------------------------- /bench/unit_test.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from unittest import TestCase # noqa: F401 4 | 5 | 6 | for i in range(15000): 7 | exec( 8 | f""" 9 | class Test{i}(TestCase): 10 | @classmethod 11 | def setUpClass(cls): pass 12 | def test_1(self): pass 13 | def test_2(self): pass 14 | def test_3(self): pass 15 | """ 16 | ) 17 | -------------------------------------------------------------------------------- /bench/xunit.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | for i in range(5000): 5 | exec( 6 | f""" 7 | class Test{i}: 8 | @classmethod 9 | def setup_class(cls): pass 10 | def test_1(self): pass 11 | def test_2(self): pass 12 | def test_3(self): pass 13 | """ 14 | ) 15 | -------------------------------------------------------------------------------- /changelog/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !_template.rst 4 | !README.rst 5 | !*.bugfix 6 | !*.bugfix.rst 7 | !*.bugfix.*.rst 8 | !*.breaking 9 | !*.breaking.rst 10 | !*.breaking.*.rst 11 | !*.contrib 12 | !*.contrib.rst 13 | !*.contrib.*.rst 14 | !*.deprecation 15 | !*.deprecation.rst 16 | !*.deprecation.*.rst 17 | !*.doc 18 | !*.doc.rst 19 | !*.doc.*.rst 20 | !*.feature 21 | !*.feature.rst 22 | !*.feature.*.rst 23 | !*.improvement 24 | !*.improvement.rst 25 | !*.improvement.*.rst 26 | !*.misc 27 | !*.misc.rst 28 | !*.misc.*.rst 29 | !*.packaging 30 | !*.packaging.rst 31 | !*.packaging.*.rst 32 | !*.vendor 33 | !*.vendor.rst 34 | !*.vendor.*.rst 35 | -------------------------------------------------------------------------------- /changelog/13461.bugfix.rst: -------------------------------------------------------------------------------- 1 | Corrected ``_pytest.terminal.TerminalReporter.isatty`` to support 2 | being called as a method. Before it was just a boolean which could 3 | break correct code when using ``-o log_cli=true``). 4 | -------------------------------------------------------------------------------- /changelog/_template.rst: -------------------------------------------------------------------------------- 1 | {% for section in sections %} 2 | {% set underline = "-" %} 3 | {% if section %} 4 | {{section}} 5 | {{ underline * section|length }}{% set underline = "~" %} 6 | 7 | {% endif %} 8 | {% if sections[section] %} 9 | {% for category, val in definitions.items() if category in sections[section] %} 10 | 11 | {{ definitions[category]['name'] }} 12 | {{ underline * definitions[category]['name']|length }} 13 | 14 | {% if definitions[category]['showcontent'] %} 15 | {% for text, values in sections[section][category]|dictsort(by='value') %} 16 | {% set issue_joiner = joiner(', ') %} 17 | - {% for value in values|sort %}{{ issue_joiner() }}`{{ value }} `_{% endfor %}: {{ text }} 18 | 19 | 20 | {% endfor %} 21 | {% else %} 22 | - {{ sections[section][category]['']|sort|join(', ') }} 23 | 24 | 25 | {% endif %} 26 | {% if sections[section][category]|length == 0 %} 27 | 28 | No significant changes. 29 | 30 | 31 | {% else %} 32 | {% endif %} 33 | {% endfor %} 34 | {% else %} 35 | 36 | No significant changes. 37 | 38 | 39 | {% endif %} 40 | {% endfor %} 41 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | # reference: https://docs.codecov.io/docs/codecovyml-reference 2 | --- 3 | 4 | codecov: 5 | token: 1eca3b1f-31a2-4fb8-a8c3-138b441b50a7 #repo token 6 | 7 | coverage: 8 | status: 9 | patch: 10 | default: 11 | target: 100% # require patches to be 100% 12 | project: false 13 | comment: false 14 | -------------------------------------------------------------------------------- /doc/en/_static/pytest-custom.css: -------------------------------------------------------------------------------- 1 | /* Tweak how the sidebar logo is presented */ 2 | .sidebar-logo { 3 | width: 70%; 4 | } 5 | .sidebar-brand { 6 | padding: 0; 7 | } 8 | 9 | /* The landing pages' sidebar-in-content highlights */ 10 | #features ul { 11 | padding-left: 1rem; 12 | list-style: none; 13 | } 14 | #features ul li { 15 | margin-bottom: 0; 16 | } 17 | @media (min-width: 46em) { 18 | #features { 19 | width: 50%; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /doc/en/_static/pytest1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/_static/pytest1.png -------------------------------------------------------------------------------- /doc/en/_templates/links.html: -------------------------------------------------------------------------------- 1 |

Useful Links

2 | 8 | -------------------------------------------------------------------------------- /doc/en/announce/release-2.1.2.rst: -------------------------------------------------------------------------------- 1 | py.test 2.1.2: bug fixes and fixes for jython 2 | =========================================================================== 3 | 4 | pytest-2.1.2 is a minor backward compatible maintenance release of the 5 | popular py.test testing tool. pytest is commonly used for unit, 6 | functional- and integration testing. See extensive docs with examples 7 | here: 8 | 9 | http://pytest.org/ 10 | 11 | Most bug fixes address remaining issues with the perfected assertions 12 | introduced in the 2.1 series - many thanks to the bug reporters and to Benjamin 13 | Peterson for helping to fix them. pytest should also work better with 14 | Jython-2.5.1 (and Jython trunk). 15 | 16 | If you want to install or upgrade pytest, just type one of:: 17 | 18 | pip install -U pytest # or 19 | easy_install -U pytest 20 | 21 | best, 22 | holger krekel / https://merlinux.eu/ 23 | 24 | Changes between 2.1.1 and 2.1.2 25 | ---------------------------------------- 26 | 27 | - fix assertion rewriting on files with windows newlines on some Python versions 28 | - refine test discovery by package/module name (--pyargs), thanks Florian Mayer 29 | - fix issue69 / assertion rewriting fixed on some boolean operations 30 | - fix issue68 / packages now work with assertion rewriting 31 | - fix issue66: use different assertion rewriting caches when the -O option is passed 32 | - don't try assertion rewriting on Jython, use reinterp 33 | -------------------------------------------------------------------------------- /doc/en/announce/release-2.1.3.rst: -------------------------------------------------------------------------------- 1 | py.test 2.1.3: just some more fixes 2 | =========================================================================== 3 | 4 | pytest-2.1.3 is a minor backward compatible maintenance release of the 5 | popular py.test testing tool. It is commonly used for unit, functional- 6 | and integration testing. See extensive docs with examples here: 7 | 8 | http://pytest.org/ 9 | 10 | The release contains another fix to the perfected assertions introduced 11 | with the 2.1 series as well as the new possibility to customize reporting 12 | for assertion expressions on a per-directory level. 13 | 14 | If you want to install or upgrade pytest, just type one of:: 15 | 16 | pip install -U pytest # or 17 | easy_install -U pytest 18 | 19 | Thanks to the bug reporters and to Ronny Pfannschmidt, Benjamin Peterson 20 | and Floris Bruynooghe who implemented the fixes. 21 | 22 | best, 23 | holger krekel 24 | 25 | Changes between 2.1.2 and 2.1.3 26 | ---------------------------------------- 27 | 28 | - fix issue79: assertion rewriting failed on some comparisons in boolops, 29 | - correctly handle zero length arguments (a la pytest '') 30 | - fix issue67 / junitxml now contains correct test durations 31 | - fix issue75 / skipping test failure on jython 32 | - fix issue77 / Allow assertrepr_compare hook to apply to a subset of tests 33 | -------------------------------------------------------------------------------- /doc/en/announce/release-2.3.1.rst: -------------------------------------------------------------------------------- 1 | pytest-2.3.1: fix regression with factory functions 2 | =========================================================================== 3 | 4 | pytest-2.3.1 is a quick follow-up release: 5 | 6 | - fix issue202 - regression with fixture functions/funcarg factories: 7 | using "self" is now safe again and works as in 2.2.4. Thanks 8 | to Eduard Schettino for the quick bug report. 9 | 10 | - disable pexpect pytest self tests on Freebsd - thanks Koob for the 11 | quick reporting 12 | 13 | - fix/improve interactive docs with --markers 14 | 15 | See 16 | 17 | http://pytest.org/ 18 | 19 | for general information. To install or upgrade pytest: 20 | 21 | pip install -U pytest # or 22 | easy_install -U pytest 23 | 24 | best, 25 | holger krekel 26 | 27 | 28 | Changes between 2.3.0 and 2.3.1 29 | ----------------------------------- 30 | 31 | - fix issue202 - fix regression: using "self" from fixture functions now 32 | works as expected (it's the same "self" instance that a test method 33 | which uses the fixture sees) 34 | 35 | - skip pexpect using tests (test_pdb.py mostly) on freebsd* systems 36 | due to pexpect not supporting it properly (hanging) 37 | 38 | - link to web pages from --markers output which provides help for 39 | pytest.mark.* usage. 40 | -------------------------------------------------------------------------------- /doc/en/announce/release-2.4.1.rst: -------------------------------------------------------------------------------- 1 | pytest-2.4.1: fixing three regressions compared to 2.3.5 2 | =========================================================================== 3 | 4 | pytest-2.4.1 is a quick follow up release to fix three regressions 5 | compared to 2.3.5 before they hit more people: 6 | 7 | - When using parser.addoption() unicode arguments to the 8 | "type" keyword should also be converted to the respective types. 9 | thanks Floris Bruynooghe, @dnozay. (fixes issue360 and issue362) 10 | 11 | - fix dotted filename completion when using argcomplete 12 | thanks Anthon van der Neuth. (fixes issue361) 13 | 14 | - fix regression when a 1-tuple ("arg",) is used for specifying 15 | parametrization (the values of the parametrization were passed 16 | nested in a tuple). Thanks Donald Stufft. 17 | 18 | - also merge doc typo fixes, thanks Andy Dirnberger 19 | 20 | as usual, docs at http://pytest.org and upgrades via:: 21 | 22 | pip install -U pytest 23 | 24 | have fun, 25 | holger krekel 26 | -------------------------------------------------------------------------------- /doc/en/announce/release-2.8.5.rst: -------------------------------------------------------------------------------- 1 | pytest-2.8.5 2 | ============ 3 | 4 | pytest is a mature Python testing tool with more than 1100 tests 5 | against itself, passing on many different interpreters and platforms. 6 | This release is supposed to be drop-in compatible to 2.8.4. 7 | 8 | See below for the changes and see docs at: 9 | 10 | http://pytest.org 11 | 12 | As usual, you can upgrade from pypi via:: 13 | 14 | pip install -U pytest 15 | 16 | Thanks to all who contributed to this release, among them: 17 | 18 | Alex Gaynor 19 | aselus-hub 20 | Bruno Oliveira 21 | Ronny Pfannschmidt 22 | 23 | 24 | Happy testing, 25 | The py.test Development Team 26 | 27 | 28 | 2.8.5 (compared to 2.8.4) 29 | ------------------------- 30 | 31 | - fix #1243: fixed issue where class attributes injected during collection could break pytest. 32 | PR by Alexei Kozlenok, thanks Ronny Pfannschmidt and Bruno Oliveira for the review and help. 33 | 34 | - fix #1074: precompute junitxml chunks instead of storing the whole tree in objects 35 | Thanks Bruno Oliveira for the report and Ronny Pfannschmidt for the PR 36 | 37 | - fix #1238: fix ``pytest.deprecated_call()`` receiving multiple arguments 38 | (Regression introduced in 2.8.4). Thanks Alex Gaynor for the report and 39 | Bruno Oliveira for the PR. 40 | -------------------------------------------------------------------------------- /doc/en/announce/release-2.8.7.rst: -------------------------------------------------------------------------------- 1 | pytest-2.8.7 2 | ============ 3 | 4 | This is a hotfix release to solve a regression 5 | in the builtin monkeypatch plugin that got introduced in 2.8.6. 6 | 7 | pytest is a mature Python testing tool with more than 1100 tests 8 | against itself, passing on many different interpreters and platforms. 9 | This release is supposed to be drop-in compatible to 2.8.5. 10 | 11 | See below for the changes and see docs at: 12 | 13 | http://pytest.org 14 | 15 | As usual, you can upgrade from pypi via:: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all who contributed to this release, among them: 20 | 21 | Ronny Pfannschmidt 22 | 23 | 24 | Happy testing, 25 | The py.test Development Team 26 | 27 | 28 | 2.8.7 (compared to 2.8.6) 29 | ------------------------- 30 | 31 | - fix #1338: use predictable object resolution for monkeypatch 32 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.0.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.0.1 2 | ============ 3 | 4 | pytest 3.0.1 has just been released to PyPI. 5 | 6 | This release fixes some regressions reported in version 3.0.0, being a 7 | drop-in replacement. To upgrade: 8 | 9 | pip install --upgrade pytest 10 | 11 | The changelog is available at http://doc.pytest.org/en/stable/changelog.html. 12 | 13 | Thanks to all who contributed to this release, among them: 14 | 15 | Adam Chainz 16 | Andrew Svetlov 17 | Bruno Oliveira 18 | Daniel Hahler 19 | Dmitry Dygalo 20 | Florian Bruhin 21 | Marcin Bachry 22 | Ronny Pfannschmidt 23 | matthiasha 24 | 25 | Happy testing, 26 | The py.test Development Team 27 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.0.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.0.2 2 | ============ 3 | 4 | pytest 3.0.2 has just been released to PyPI. 5 | 6 | This release fixes some regressions and bugs reported in version 3.0.1, being a 7 | drop-in replacement. To upgrade:: 8 | 9 | pip install --upgrade pytest 10 | 11 | The changelog is available at http://doc.pytest.org/en/stable/changelog.html. 12 | 13 | Thanks to all who contributed to this release, among them: 14 | 15 | * Ahn Ki-Wook 16 | * Bruno Oliveira 17 | * Florian Bruhin 18 | * Jordan Guymon 19 | * Raphael Pierzina 20 | * Ronny Pfannschmidt 21 | * mbyt 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.0.3.rst: -------------------------------------------------------------------------------- 1 | pytest-3.0.3 2 | ============ 3 | 4 | pytest 3.0.3 has just been released to PyPI. 5 | 6 | This release fixes some regressions and bugs reported in the last version, 7 | being a drop-in replacement. To upgrade:: 8 | 9 | pip install --upgrade pytest 10 | 11 | The changelog is available at http://doc.pytest.org/en/stable/changelog.html. 12 | 13 | Thanks to all who contributed to this release, among them: 14 | 15 | * Bruno Oliveira 16 | * Florian Bruhin 17 | * Floris Bruynooghe 18 | * Huayi Zhang 19 | * Lev Maximov 20 | * Raquel Alegre 21 | * Ronny Pfannschmidt 22 | * Roy Williams 23 | * Tyler Goodlet 24 | * mbyt 25 | 26 | Happy testing, 27 | The pytest Development Team 28 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.0.4.rst: -------------------------------------------------------------------------------- 1 | pytest-3.0.4 2 | ============ 3 | 4 | pytest 3.0.4 has just been released to PyPI. 5 | 6 | This release fixes some regressions and bugs reported in the last version, 7 | being a drop-in replacement. To upgrade:: 8 | 9 | pip install --upgrade pytest 10 | 11 | The changelog is available at http://doc.pytest.org/en/stable/changelog.html. 12 | 13 | Thanks to all who contributed to this release, among them: 14 | 15 | * Bruno Oliveira 16 | * Dan Wandschneider 17 | * Florian Bruhin 18 | * Georgy Dyuldin 19 | * Grigorii Eremeev 20 | * Jason R. Coombs 21 | * Manuel Jacob 22 | * Mathieu Clabaut 23 | * Michael Seifert 24 | * Nikolaus Rath 25 | * Ronny Pfannschmidt 26 | * Tom V 27 | 28 | Happy testing, 29 | The pytest Development Team 30 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.0.5.rst: -------------------------------------------------------------------------------- 1 | pytest-3.0.5 2 | ============ 3 | 4 | pytest 3.0.5 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Ana Vojnovic 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Duncan Betts 18 | * Igor Starikov 19 | * Ismail 20 | * Luke Murphy 21 | * Ned Batchelder 22 | * Ronny Pfannschmidt 23 | * Sebastian Ramacher 24 | * nmundar 25 | 26 | Happy testing, 27 | The pytest Development Team 28 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.0.6.rst: -------------------------------------------------------------------------------- 1 | pytest-3.0.6 2 | ============ 3 | 4 | pytest 3.0.6 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | 13 | Thanks to all who contributed to this release, among them: 14 | 15 | * Andreas Pelme 16 | * Bruno Oliveira 17 | * Dmitry Malinovsky 18 | * Eli Boyarski 19 | * Jakub Wilk 20 | * Jeff Widman 21 | * Loïc Estève 22 | * Luke Murphy 23 | * Miro Hrončok 24 | * Oscar Hellström 25 | * Peter Heatwole 26 | * Philippe Ombredanne 27 | * Ronny Pfannschmidt 28 | * Rutger Prins 29 | * Stefan Scherfke 30 | 31 | 32 | Happy testing, 33 | The pytest Development Team 34 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.0.7.rst: -------------------------------------------------------------------------------- 1 | pytest-3.0.7 2 | ============ 3 | 4 | pytest 3.0.7 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Barney Gale 16 | * Bruno Oliveira 17 | * Florian Bruhin 18 | * Floris Bruynooghe 19 | * Ionel Cristian Mărieș 20 | * Katerina Koukiou 21 | * NODA, Kai 22 | * Omer Hadari 23 | * Patrick Hayes 24 | * Ran Benita 25 | * Ronny Pfannschmidt 26 | * Victor Uriarte 27 | * Vidar Tonaas Fauske 28 | * Ville Skyttä 29 | * fbjorn 30 | * mbyt 31 | 32 | Happy testing, 33 | The pytest Development Team 34 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.1.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.1.1 2 | ======================================= 3 | 4 | pytest 3.1.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Florian Bruhin 16 | * Floris Bruynooghe 17 | * Jason R. Coombs 18 | * Ronny Pfannschmidt 19 | * wanghui 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.1.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.1.2 2 | ======================================= 3 | 4 | pytest 3.1.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Andreas Pelme 15 | * ApaDoctor 16 | * Bruno Oliveira 17 | * Florian Bruhin 18 | * Ronny Pfannschmidt 19 | * Segev Finer 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.1.3.rst: -------------------------------------------------------------------------------- 1 | pytest-3.1.3 2 | ======================================= 3 | 4 | pytest 3.1.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Antoine Legrand 15 | * Bruno Oliveira 16 | * Max Moroz 17 | * Raphael Pierzina 18 | * Ronny Pfannschmidt 19 | * Ryan Fitzpatrick 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.10.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.10.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.10.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anders Hovmöller 25 | * Andreu Vallbona Plazas 26 | * Ankit Goel 27 | * Anthony Sottile 28 | * Bernardo Gomes 29 | * Brianna Laugher 30 | * Bruno Oliveira 31 | * Daniel Hahler 32 | * David Szotten 33 | * Mick Koch 34 | * Niclas Olofsson 35 | * Palash Chatterjee 36 | * Ronny Pfannschmidt 37 | * Sven-Hendrik Haase 38 | * Ville Skyttä 39 | * William Jamir Silva 40 | 41 | 42 | Happy testing, 43 | The Pytest Development Team 44 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.10.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.10.1 2 | ======================================= 3 | 4 | pytest 3.10.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Boris Feld 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * Fabien ZARIFIAN 19 | * Jon Dufresne 20 | * Ronny Pfannschmidt 21 | 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.2.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.2.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.2.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 1600 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | http://doc.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | http://docs.pytest.org 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Alex Hartoto 25 | * Andras Tim 26 | * Bruno Oliveira 27 | * Daniel Hahler 28 | * Florian Bruhin 29 | * Floris Bruynooghe 30 | * John Still 31 | * Jordan Moldow 32 | * Kale Kundert 33 | * Lawrence Mitchell 34 | * Llandy Riveron Del Risco 35 | * Maik Figura 36 | * Martin Altmayer 37 | * Mihai Capotă 38 | * Nathaniel Waisbrot 39 | * Nguyễn Hồng Quân 40 | * Pauli Virtanen 41 | * Raphael Pierzina 42 | * Ronny Pfannschmidt 43 | * Segev Finer 44 | * V.Kuznetsov 45 | 46 | 47 | Happy testing, 48 | The Pytest Development Team 49 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.2.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.2.1 2 | ======================================= 3 | 4 | pytest 3.2.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Alex Gaynor 15 | * Bruno Oliveira 16 | * Florian Bruhin 17 | * Ronny Pfannschmidt 18 | * Srinivas Reddy Thatiparthy 19 | 20 | 21 | Happy testing, 22 | The pytest Development Team 23 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.2.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.2.2 2 | ======================================= 3 | 4 | pytest 3.2.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Andreas Pelme 15 | * Antonio Hidalgo 16 | * Bruno Oliveira 17 | * Felipe Dau 18 | * Fernando Macedo 19 | * Jesús Espino 20 | * Joan Massich 21 | * Joe Talbott 22 | * Kirill Pinchuk 23 | * Ronny Pfannschmidt 24 | * Xuan Luong 25 | 26 | 27 | Happy testing, 28 | The pytest Development Team 29 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.2.3.rst: -------------------------------------------------------------------------------- 1 | pytest-3.2.3 2 | ======================================= 3 | 4 | pytest 3.2.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Evan 16 | * Joe Hamman 17 | * Oliver Bestwalter 18 | * Ronny Pfannschmidt 19 | * Xuan Luong 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.2.4.rst: -------------------------------------------------------------------------------- 1 | pytest-3.2.4 2 | ======================================= 3 | 4 | pytest 3.2.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Christian Boelsen 16 | * Christoph Buchner 17 | * Daw-Ran Liou 18 | * Florian Bruhin 19 | * Franck Michea 20 | * Leonard Lausen 21 | * Matty G 22 | * Owen Tuz 23 | * Pavel Karateev 24 | * Pierre GIRAUD 25 | * Ronny Pfannschmidt 26 | * Stephen Finucane 27 | * Sviatoslav Abakumov 28 | * Thomas Hisch 29 | * Tom Dalton 30 | * Xuan Luong 31 | * Yorgos Pagles 32 | * Семён Марьясин 33 | 34 | 35 | Happy testing, 36 | The pytest Development Team 37 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.2.5.rst: -------------------------------------------------------------------------------- 1 | pytest-3.2.5 2 | ======================================= 3 | 4 | pytest 3.2.5 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.3.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.3.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.3.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 1600 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | http://doc.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | http://docs.pytest.org 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anthony Sottile 25 | * Bruno Oliveira 26 | * Ceridwen 27 | * Daniel Hahler 28 | * Dirk Thomas 29 | * Dmitry Malinovsky 30 | * Florian Bruhin 31 | * George Y. Kussumoto 32 | * Hugo 33 | * Jesús Espino 34 | * Joan Massich 35 | * Ofir 36 | * OfirOshir 37 | * Ronny Pfannschmidt 38 | * Samuel Dion-Girardeau 39 | * Srinivas Reddy Thatiparthy 40 | * Sviatoslav Abakumov 41 | * Tarcisio Fischer 42 | * Thomas Hisch 43 | * Tyler Goodlet 44 | * hugovk 45 | * je 46 | * prokaktus 47 | 48 | 49 | Happy testing, 50 | The Pytest Development Team 51 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.3.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.3.1 2 | ======================================= 3 | 4 | pytest 3.3.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Daniel Hahler 16 | * Eugene Prikazchikov 17 | * Florian Bruhin 18 | * Roland Puntaier 19 | * Ronny Pfannschmidt 20 | * Sebastian Rahlf 21 | * Tom Viner 22 | 23 | 24 | Happy testing, 25 | The pytest Development Team 26 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.3.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.3.2 2 | ======================================= 3 | 4 | pytest 3.3.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Antony Lee 16 | * Austin 17 | * Bruno Oliveira 18 | * Florian Bruhin 19 | * Floris Bruynooghe 20 | * Henk-Jaap Wagenaar 21 | * Jurko Gospodnetić 22 | * Ronny Pfannschmidt 23 | * Srinivas Reddy Thatiparthy 24 | * Thomas Hisch 25 | 26 | 27 | Happy testing, 28 | The pytest Development Team 29 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.4.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.4.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.4.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 1600 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | http://doc.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | http://docs.pytest.org 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Aaron 25 | * Alan Velasco 26 | * Anders Hovmöller 27 | * Andrew Toolan 28 | * Anthony Sottile 29 | * Aron Coyle 30 | * Brian Maissy 31 | * Bruno Oliveira 32 | * Cyrus Maden 33 | * Florian Bruhin 34 | * Henk-Jaap Wagenaar 35 | * Ian Lesperance 36 | * Jon Dufresne 37 | * Jurko Gospodnetić 38 | * Kate 39 | * Kimberly 40 | * Per A. Brodtkorb 41 | * Pierre-Alexandre Fonta 42 | * Raphael Castaneda 43 | * Ronny Pfannschmidt 44 | * ST John 45 | * Segev Finer 46 | * Thomas Hisch 47 | * Tzu-ping Chung 48 | * feuillemorte 49 | 50 | 51 | Happy testing, 52 | The Pytest Development Team 53 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.4.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.4.1 2 | ======================================= 3 | 4 | pytest 3.4.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Aaron 15 | * Alan Velasco 16 | * Andy Freeland 17 | * Brian Maissy 18 | * Bruno Oliveira 19 | * Florian Bruhin 20 | * Jason R. Coombs 21 | * Marcin Bachry 22 | * Pedro Algarvio 23 | * Ronny Pfannschmidt 24 | 25 | 26 | Happy testing, 27 | The pytest Development Team 28 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.4.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.4.2 2 | ======================================= 3 | 4 | pytest 3.4.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Allan Feldman 15 | * Bruno Oliveira 16 | * Florian Bruhin 17 | * Jason R. Coombs 18 | * Kyle Altendorf 19 | * Maik Figura 20 | * Ronny Pfannschmidt 21 | * codetriage-readme-bot 22 | * feuillemorte 23 | * joshm91 24 | * mike 25 | 26 | 27 | Happy testing, 28 | The pytest Development Team 29 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.5.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.5.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.5.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 1600 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | http://doc.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | http://docs.pytest.org 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Allan Feldman 25 | * Brian Maissy 26 | * Bruno Oliveira 27 | * Carlos Jenkins 28 | * Daniel Hahler 29 | * Florian Bruhin 30 | * Jason R. Coombs 31 | * Jeffrey Rackauckas 32 | * Jordan Speicher 33 | * Julien Palard 34 | * Kale Kundert 35 | * Kostis Anagnostopoulos 36 | * Kyle Altendorf 37 | * Maik Figura 38 | * Pedro Algarvio 39 | * Ronny Pfannschmidt 40 | * Tadeu Manoel 41 | * Tareq Alayan 42 | * Thomas Hisch 43 | * William Lee 44 | * codetriage-readme-bot 45 | * feuillemorte 46 | * joshm91 47 | * mike 48 | 49 | 50 | Happy testing, 51 | The Pytest Development Team 52 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.5.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.5.1 2 | ======================================= 3 | 4 | pytest 3.5.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Brian Maissy 15 | * Bruno Oliveira 16 | * Darren Burns 17 | * David Chudzicki 18 | * Floris Bruynooghe 19 | * Holger Kohr 20 | * Irmen de Jong 21 | * Jeffrey Rackauckas 22 | * Rachel Kogan 23 | * Ronny Pfannschmidt 24 | * Stefan Scherfke 25 | * Tim Strazny 26 | * Семён Марьясин 27 | 28 | 29 | Happy testing, 30 | The pytest Development Team 31 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.6.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.6.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.6.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 1600 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | http://doc.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | http://docs.pytest.org 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anthony Shaw 25 | * ApaDoctor 26 | * Brian Maissy 27 | * Bruno Oliveira 28 | * Jon Dufresne 29 | * Katerina Koukiou 30 | * Miro Hrončok 31 | * Rachel Kogan 32 | * Ronny Pfannschmidt 33 | * Tim Hughes 34 | * Tyler Goodlet 35 | * Ville Skyttä 36 | * aviral1701 37 | * feuillemorte 38 | 39 | 40 | Happy testing, 41 | The Pytest Development Team 42 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.6.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.6.1 2 | ======================================= 3 | 4 | pytest 3.6.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Jeffrey Rackauckas 17 | * Miro Hrončok 18 | * Niklas Meinzer 19 | * Oliver Bestwalter 20 | * Ronny Pfannschmidt 21 | 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.6.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.6.2 2 | ======================================= 3 | 4 | pytest 3.6.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Alan Velasco 15 | * Alex Barbato 16 | * Anthony Sottile 17 | * Bartosz Cierocki 18 | * Bruno Oliveira 19 | * Daniel Hahler 20 | * Guoqiang Zhang 21 | * Hynek Schlawack 22 | * John T. Wodder II 23 | * Michael Käufl 24 | * Ronny Pfannschmidt 25 | * Samuel Dion-Girardeau 26 | 27 | 28 | Happy testing, 29 | The pytest Development Team 30 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.6.3.rst: -------------------------------------------------------------------------------- 1 | pytest-3.6.3 2 | ======================================= 3 | 4 | pytest 3.6.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * AdamEr8 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * Jean-Paul Calderone 18 | * Jon Dufresne 19 | * Marcelo Duarte Trevisani 20 | * Ondřej Súkup 21 | * Ronny Pfannschmidt 22 | * T.E.A de Souza 23 | * Victor Maryama 24 | 25 | 26 | Happy testing, 27 | The pytest Development Team 28 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.6.4.rst: -------------------------------------------------------------------------------- 1 | pytest-3.6.4 2 | ======================================= 3 | 4 | pytest 3.6.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bernhard M. Wiedemann 16 | * Bruno Oliveira 17 | * Drew 18 | * E Hershey 19 | * Hugo Martins 20 | * Vlad Shcherbina 21 | 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.7.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.7.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.7.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | http://doc.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | http://docs.pytest.org 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Alan 25 | * Alan Brammer 26 | * Ammar Najjar 27 | * Anthony Sottile 28 | * Bruno Oliveira 29 | * Jeffrey Rackauckas 30 | * Kale Kundert 31 | * Ronny Pfannschmidt 32 | * Serhii Mozghovyi 33 | * Tadek Teleżyński 34 | * Wil Cooley 35 | * abrammer 36 | * avirlrma 37 | * turturica 38 | 39 | 40 | Happy testing, 41 | The Pytest Development Team 42 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.7.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.7.1 2 | ======================================= 3 | 4 | pytest 3.7.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Kale Kundert 17 | * Ronny Pfannschmidt 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.7.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.7.2 2 | ======================================= 3 | 4 | pytest 3.7.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Josh Holland 18 | * Ronny Pfannschmidt 19 | * Sankt Petersbug 20 | * Wes Thomas 21 | * turturica 22 | 23 | 24 | Happy testing, 25 | The pytest Development Team 26 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.7.3.rst: -------------------------------------------------------------------------------- 1 | pytest-3.7.3 2 | ======================================= 3 | 4 | pytest 3.7.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at http://doc.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Andrew Champion 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * Gandalf Saxe 19 | * Jennifer Rinker 20 | * Natan Lao 21 | * Ondřej Súkup 22 | * Ronny Pfannschmidt 23 | * Sankt Petersbug 24 | * Tyler Richard 25 | * Victor Maryama 26 | * Vlad Shcherbina 27 | * turturica 28 | * wim glenn 29 | 30 | 31 | Happy testing, 32 | The pytest Development Team 33 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.7.4.rst: -------------------------------------------------------------------------------- 1 | pytest-3.7.4 2 | ======================================= 3 | 4 | pytest 3.7.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Jiri Kuncar 18 | * Steve Piercy 19 | 20 | 21 | Happy testing, 22 | The pytest Development Team 23 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.8.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.8.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.8.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anthony Sottile 25 | * Bruno Oliveira 26 | * CrazyMerlyn 27 | * Daniel Hahler 28 | * Fabio Zadrozny 29 | * Jeffrey Rackauckas 30 | * Ronny Pfannschmidt 31 | * Virgil Dupras 32 | * dhirensr 33 | * hoefling 34 | * wim glenn 35 | 36 | 37 | Happy testing, 38 | The Pytest Development Team 39 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.8.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.8.1 2 | ======================================= 3 | 4 | pytest 3.8.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Ankit Goel 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * Maximilian Albert 19 | * Ronny Pfannschmidt 20 | * William Jamir Silva 21 | * wim glenn 22 | 23 | 24 | Happy testing, 25 | The pytest Development Team 26 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.8.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.8.2 2 | ======================================= 3 | 4 | pytest 3.8.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Ankit Goel 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * Denis Otkidach 19 | * Harry Percival 20 | * Jeffrey Rackauckas 21 | * Jose Carlos Menezes 22 | * Ronny Pfannschmidt 23 | * Zac Hatfield-Dodds 24 | * iwanb 25 | 26 | 27 | Happy testing, 28 | The pytest Development Team 29 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.9.0.rst: -------------------------------------------------------------------------------- 1 | pytest-3.9.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 3.9.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Andrea Cimatoribus 25 | * Ankit Goel 26 | * Anthony Sottile 27 | * Ben Eyal 28 | * Bruno Oliveira 29 | * Daniel Hahler 30 | * Jeffrey Rackauckas 31 | * Jose Carlos Menezes 32 | * Kyle Altendorf 33 | * Niklas JQ 34 | * Palash Chatterjee 35 | * Ronny Pfannschmidt 36 | * Thomas Hess 37 | * Thomas Hisch 38 | * Tomer Keren 39 | * Victor Maryama 40 | 41 | 42 | Happy testing, 43 | The Pytest Development Team 44 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.9.1.rst: -------------------------------------------------------------------------------- 1 | pytest-3.9.1 2 | ======================================= 3 | 4 | pytest 3.9.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Ronny Pfannschmidt 16 | * Thomas Hisch 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.9.2.rst: -------------------------------------------------------------------------------- 1 | pytest-3.9.2 2 | ======================================= 3 | 4 | pytest 3.9.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Ankit Goel 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * Ronny Pfannschmidt 18 | * Vincent Barbaresi 19 | * ykantor 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-3.9.3.rst: -------------------------------------------------------------------------------- 1 | pytest-3.9.3 2 | ======================================= 3 | 4 | pytest 3.9.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Andreas Profous 15 | * Ankit Goel 16 | * Anthony Sottile 17 | * Bruno Oliveira 18 | * Daniel Hahler 19 | * Jon Dufresne 20 | * Ronny Pfannschmidt 21 | 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.0.0.rst: -------------------------------------------------------------------------------- 1 | pytest-4.0.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 4.0.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Bruno Oliveira 25 | * Daniel Hahler 26 | * Ronny Pfannschmidt 27 | 28 | 29 | Happy testing, 30 | The Pytest Development Team 31 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.0.1.rst: -------------------------------------------------------------------------------- 1 | pytest-4.0.1 2 | ======================================= 3 | 4 | pytest 4.0.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Michael D. Hoyle 18 | * Ronny Pfannschmidt 19 | * Slam 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.0.2.rst: -------------------------------------------------------------------------------- 1 | pytest-4.0.2 2 | ======================================= 3 | 4 | pytest 4.0.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Pedro Algarvio 18 | * Ronny Pfannschmidt 19 | * Tomer Keren 20 | * Yash Todi 21 | 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.1.0.rst: -------------------------------------------------------------------------------- 1 | pytest-4.1.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 4.1.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Adam Johnson 25 | * Aly Sivji 26 | * Andrey Paramonov 27 | * Anthony Sottile 28 | * Bruno Oliveira 29 | * Daniel Hahler 30 | * David Vo 31 | * Hyunchel Kim 32 | * Jeffrey Rackauckas 33 | * Kanguros 34 | * Nicholas Devenish 35 | * Pedro Algarvio 36 | * Randy Barlow 37 | * Ronny Pfannschmidt 38 | * Tomer Keren 39 | * feuillemorte 40 | * wim glenn 41 | 42 | 43 | Happy testing, 44 | The Pytest Development Team 45 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.1.1.rst: -------------------------------------------------------------------------------- 1 | pytest-4.1.1 2 | ======================================= 3 | 4 | pytest 4.1.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Anton Lodder 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * David Vo 19 | * Oscar Benjamin 20 | * Ronny Pfannschmidt 21 | * Victor Maryama 22 | * Yoav Caspi 23 | * dmitry.dygalo 24 | 25 | 26 | Happy testing, 27 | The pytest Development Team 28 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.2.0.rst: -------------------------------------------------------------------------------- 1 | pytest-4.2.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 4.2.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Adam Uhlir 25 | * Anthony Sottile 26 | * Bruno Oliveira 27 | * Christopher Dignam 28 | * Daniel Hahler 29 | * Joseph Hunkeler 30 | * Kristoffer Nordstroem 31 | * Ronny Pfannschmidt 32 | * Thomas Hisch 33 | * wim glenn 34 | 35 | 36 | Happy testing, 37 | The Pytest Development Team 38 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.2.1.rst: -------------------------------------------------------------------------------- 1 | pytest-4.2.1 2 | ======================================= 3 | 4 | pytest 4.2.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Arel Cordero 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * Holger Kohr 19 | * Kevin J. Foley 20 | * Nick Murphy 21 | * Paweł Stradomski 22 | * Raphael Pierzina 23 | * Ronny Pfannschmidt 24 | * Sam Brightman 25 | * Thomas Hisch 26 | * Zac Hatfield-Dodds 27 | 28 | 29 | Happy testing, 30 | The pytest Development Team 31 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.3.0.rst: -------------------------------------------------------------------------------- 1 | pytest-4.3.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 4.3.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Andras Mitzki 25 | * Anthony Sottile 26 | * Bruno Oliveira 27 | * Christian Fetzer 28 | * Daniel Hahler 29 | * Grygorii Iermolenko 30 | * R. Alex Matevish 31 | * Ronny Pfannschmidt 32 | * cclauss 33 | 34 | 35 | Happy testing, 36 | The Pytest Development Team 37 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.3.1.rst: -------------------------------------------------------------------------------- 1 | pytest-4.3.1 2 | ======================================= 3 | 4 | pytest 4.3.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Andras Mitzki 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * Danilo Horta 19 | * Grygorii Iermolenko 20 | * Jeff Hale 21 | * Kyle Altendorf 22 | * Stephan Hoyer 23 | * Zac Hatfield-Dodds 24 | * songbowen 25 | 26 | 27 | Happy testing, 28 | The pytest Development Team 29 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.4.0.rst: -------------------------------------------------------------------------------- 1 | pytest-4.4.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 4.4.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anthony Sottile 25 | * ApaDoctor 26 | * Bernhard M. Wiedemann 27 | * Brian Skinn 28 | * Bruno Oliveira 29 | * Daniel Hahler 30 | * Gary Tyler 31 | * Jeong YunWon 32 | * Miro Hrončok 33 | * Takafumi Arakaki 34 | * henrykironde 35 | * smheidrich 36 | 37 | 38 | Happy testing, 39 | The Pytest Development Team 40 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.4.1.rst: -------------------------------------------------------------------------------- 1 | pytest-4.4.1 2 | ======================================= 3 | 4 | pytest 4.4.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.4.2.rst: -------------------------------------------------------------------------------- 1 | pytest-4.4.2 2 | ======================================= 3 | 4 | pytest 4.4.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Allan Lewis 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * DamianSkrzypczak 18 | * Daniel Hahler 19 | * Don Kirkby 20 | * Douglas Thor 21 | * Hugo 22 | * Ilya Konstantinov 23 | * Jon Dufresne 24 | * Matt Cooper 25 | * Nikolay Kondratyev 26 | * Ondřej Súkup 27 | * Peter Schutt 28 | * Romain Chossart 29 | * Sitaktif 30 | 31 | 32 | Happy testing, 33 | The pytest Development Team 34 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.5.0.rst: -------------------------------------------------------------------------------- 1 | pytest-4.5.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 4.5.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anthony Sottile 25 | * Bruno Oliveira 26 | * Daniel Hahler 27 | * Floris Bruynooghe 28 | * Pulkit Goyal 29 | * Samuel Searles-Bryant 30 | * Zac Hatfield-Dodds 31 | 32 | 33 | Happy testing, 34 | The Pytest Development Team 35 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.0.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 4.6.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Akiomi Kamakura 25 | * Anthony Sottile 26 | * Bruno Oliveira 27 | * Daniel Hahler 28 | * David Röthlisberger 29 | * Evan Kepner 30 | * Jeffrey Rackauckas 31 | * MyComputer 32 | * Nikita Krokosh 33 | * Raul Tambre 34 | * Thomas Hisch 35 | * Tim Hoffmann 36 | * Tomer Keren 37 | * Victor Maryama 38 | * danielx123 39 | * oleg-yegorov 40 | 41 | 42 | Happy testing, 43 | The Pytest Development Team 44 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.1.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.1 2 | ======================================= 3 | 4 | pytest 4.6.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.2.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.2 2 | ======================================= 3 | 4 | pytest 4.6.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.3.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.3 2 | ======================================= 3 | 4 | pytest 4.6.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Dirk Thomas 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.4.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.4 2 | ======================================= 3 | 4 | pytest 4.6.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Thomas Grainger 18 | * Zac Hatfield-Dodds 19 | 20 | 21 | Happy testing, 22 | The pytest Development Team 23 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.5.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.5 2 | ======================================= 3 | 4 | pytest 4.6.5 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Thomas Grainger 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.6.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.6 2 | ======================================= 3 | 4 | pytest 4.6.6 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Michael Goerz 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.7.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.7 2 | ======================================= 3 | 4 | pytest 4.6.7 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Daniel Hahler 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.8.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.8 2 | ======================================= 3 | 4 | pytest 4.6.8 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Ryan Mast 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-4.6.9.rst: -------------------------------------------------------------------------------- 1 | pytest-4.6.9 2 | ======================================= 3 | 4 | pytest 4.6.9 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Felix Yan 17 | * Hugo 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.0.0.rst: -------------------------------------------------------------------------------- 1 | pytest-5.0.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 5.0.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anthony Sottile 25 | * Bruno Oliveira 26 | * Daniel Hahler 27 | * Dirk Thomas 28 | * Evan Kepner 29 | * Florian Bruhin 30 | * Hugo 31 | * Kevin J. Foley 32 | * Pulkit Goyal 33 | * Ralph Giles 34 | * Ronny Pfannschmidt 35 | * Thomas Grainger 36 | * Thomas Hisch 37 | * Tim Gates 38 | * Victor Maryama 39 | * Yuri Apollov 40 | * Zac Hatfield-Dodds 41 | * curiousjazz77 42 | * patriksevallius 43 | 44 | 45 | Happy testing, 46 | The Pytest Development Team 47 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.0.1.rst: -------------------------------------------------------------------------------- 1 | pytest-5.0.1 2 | ======================================= 3 | 4 | pytest 5.0.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * AmirElkess 15 | * Andreu Vallbona Plazas 16 | * Anthony Sottile 17 | * Bruno Oliveira 18 | * Florian Bruhin 19 | * Michael Moore 20 | * Niklas Meinzer 21 | * Thomas Grainger 22 | 23 | 24 | Happy testing, 25 | The pytest Development Team 26 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.1.0.rst: -------------------------------------------------------------------------------- 1 | pytest-5.1.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 5.1.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Albert Tugushev 25 | * Alexey Zankevich 26 | * Anthony Sottile 27 | * Bruno Oliveira 28 | * Daniel Hahler 29 | * David Röthlisberger 30 | * Florian Bruhin 31 | * Ilya Stepin 32 | * Jon Dufresne 33 | * Kaiqi 34 | * Max R 35 | * Miro Hrončok 36 | * Oliver Bestwalter 37 | * Ran Benita 38 | * Ronny Pfannschmidt 39 | * Samuel Searles-Bryant 40 | * Semen Zhydenko 41 | * Steffen Schroeder 42 | * Thomas Grainger 43 | * Tim Hoffmann 44 | * William Woodall 45 | * Wojtek Erbetowski 46 | * Xixi Zhao 47 | * Yash Todi 48 | * boris 49 | * dmitry.dygalo 50 | * helloocc 51 | * martbln 52 | * mei-li 53 | 54 | 55 | Happy testing, 56 | The Pytest Development Team 57 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.1.1.rst: -------------------------------------------------------------------------------- 1 | pytest-5.1.1 2 | ======================================= 3 | 4 | pytest 5.1.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Florian Bruhin 18 | * Hugo van Kemenade 19 | * Ran Benita 20 | * Ronny Pfannschmidt 21 | 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.1.2.rst: -------------------------------------------------------------------------------- 1 | pytest-5.1.2 2 | ======================================= 3 | 4 | pytest 5.1.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Andrzej Klajnert 15 | * Anthony Sottile 16 | * Bruno Oliveira 17 | * Christian Neumüller 18 | * Robert Holt 19 | * linchiwei123 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.1.3.rst: -------------------------------------------------------------------------------- 1 | pytest-5.1.3 2 | ======================================= 3 | 4 | pytest 5.1.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Christian Neumüller 17 | * Daniel Hahler 18 | * Gene Wood 19 | * Hugo 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.2.0.rst: -------------------------------------------------------------------------------- 1 | pytest-5.2.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 5.2.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Andrzej Klajnert 25 | * Anthony Sottile 26 | * Bruno Oliveira 27 | * Daniel Hahler 28 | * James Cooke 29 | * Michael Goerz 30 | * Ran Benita 31 | * Tomáš Chvátal 32 | 33 | 34 | Happy testing, 35 | The Pytest Development Team 36 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.2.1.rst: -------------------------------------------------------------------------------- 1 | pytest-5.2.1 2 | ======================================= 3 | 4 | pytest 5.2.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Florian Bruhin 17 | * Hynek Schlawack 18 | * Kevin J. Foley 19 | * tadashigaki 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.2.2.rst: -------------------------------------------------------------------------------- 1 | pytest-5.2.2 2 | ======================================= 3 | 4 | pytest 5.2.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Albert Tugushev 15 | * Andrzej Klajnert 16 | * Anthony Sottile 17 | * Bruno Oliveira 18 | * Daniel Hahler 19 | * Florian Bruhin 20 | * Nattaphoom Chaipreecha 21 | * Oliver Bestwalter 22 | * Philipp Loose 23 | * Ran Benita 24 | * Victor Maryama 25 | * Yoav Caspi 26 | 27 | 28 | Happy testing, 29 | The pytest Development Team 30 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.2.3.rst: -------------------------------------------------------------------------------- 1 | pytest-5.2.3 2 | ======================================= 3 | 4 | pytest 5.2.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Brett Cannon 16 | * Bruno Oliveira 17 | * Daniel Hahler 18 | * Daniil Galiev 19 | * David Szotten 20 | * Florian Bruhin 21 | * Patrick Harmon 22 | * Ran Benita 23 | * Zac Hatfield-Dodds 24 | * Zak Hassan 25 | 26 | 27 | Happy testing, 28 | The pytest Development Team 29 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.2.4.rst: -------------------------------------------------------------------------------- 1 | pytest-5.2.4 2 | ======================================= 3 | 4 | pytest 5.2.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Hugo 18 | * Michael Shields 19 | 20 | 21 | Happy testing, 22 | The pytest Development Team 23 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.3.0.rst: -------------------------------------------------------------------------------- 1 | pytest-5.3.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 5.3.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bugs fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/stable/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/stable/ 17 | 18 | As usual, you can upgrade from pypi via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * AnjoMan 25 | * Anthony Sottile 26 | * Anton Lodder 27 | * Bruno Oliveira 28 | * Daniel Hahler 29 | * Gregory Lee 30 | * Josh Karpel 31 | * JoshKarpel 32 | * Joshua Storck 33 | * Kale Kundert 34 | * MarcoGorelli 35 | * Michael Krebs 36 | * NNRepos 37 | * Ran Benita 38 | * TH3CHARLie 39 | * Tibor Arpas 40 | * Zac Hatfield-Dodds 41 | * 林玮 42 | 43 | 44 | Happy testing, 45 | The Pytest Development Team 46 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.3.1.rst: -------------------------------------------------------------------------------- 1 | pytest-5.3.1 2 | ======================================= 3 | 4 | pytest 5.3.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Felix Yan 18 | * Florian Bruhin 19 | * Mark Dickinson 20 | * Nikolay Kondratyev 21 | * Steffen Schroeder 22 | * Zac Hatfield-Dodds 23 | 24 | 25 | Happy testing, 26 | The pytest Development Team 27 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.3.2.rst: -------------------------------------------------------------------------------- 1 | pytest-5.3.2 2 | ======================================= 3 | 4 | pytest 5.3.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Claudio Madotto 17 | * Daniel Hahler 18 | * Jared Vasquez 19 | * Michael Rose 20 | * Ran Benita 21 | * Ronny Pfannschmidt 22 | * Zac Hatfield-Dodds 23 | 24 | 25 | Happy testing, 26 | The pytest Development Team 27 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.3.3.rst: -------------------------------------------------------------------------------- 1 | pytest-5.3.3 2 | ======================================= 3 | 4 | pytest 5.3.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Adam Johnson 15 | * Alexandre Mulatinho 16 | * Anthony Sottile 17 | * Bruno Oliveira 18 | * Chris NeJame 19 | * Daniel Hahler 20 | * Hugo van Kemenade 21 | * Marcelo Duarte Trevisani 22 | * PaulC 23 | * Ran Benita 24 | * Ryan Barner 25 | * Seth Junot 26 | * marc 27 | 28 | 29 | Happy testing, 30 | The pytest Development Team 31 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.3.4.rst: -------------------------------------------------------------------------------- 1 | pytest-5.3.4 2 | ======================================= 3 | 4 | pytest 5.3.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Daniel Hahler 16 | * Ran Benita 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.3.5.rst: -------------------------------------------------------------------------------- 1 | pytest-5.3.5 2 | ======================================= 3 | 4 | pytest 5.3.5 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Daniel Hahler 15 | * Ran Benita 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.4.1.rst: -------------------------------------------------------------------------------- 1 | pytest-5.4.1 2 | ======================================= 3 | 4 | pytest 5.4.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.4.2.rst: -------------------------------------------------------------------------------- 1 | pytest-5.4.2 2 | ======================================= 3 | 4 | pytest 5.4.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Hahler 17 | * Ran Benita 18 | * Ronny Pfannschmidt 19 | 20 | 21 | Happy testing, 22 | The pytest Development Team 23 | -------------------------------------------------------------------------------- /doc/en/announce/release-5.4.3.rst: -------------------------------------------------------------------------------- 1 | pytest-5.4.3 2 | ======================================= 3 | 4 | pytest 5.4.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Ran Benita 17 | * Tor Colvin 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.0.0.rst: -------------------------------------------------------------------------------- 1 | pytest-6.0.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 6.0.0 release! 5 | 6 | pytest is a mature Python testing tool with more than 2000 tests 7 | against itself, passing on many different interpreters and platforms. 8 | 9 | This release contains a number of bug fixes and improvements, so users are encouraged 10 | to take a look at the CHANGELOG: 11 | 12 | https://docs.pytest.org/en/latest/changelog.html 13 | 14 | For complete documentation, please visit: 15 | 16 | https://docs.pytest.org/en/latest/ 17 | 18 | As usual, you can upgrade from PyPI via: 19 | 20 | pip install -U pytest 21 | 22 | Thanks to all who contributed to this release, among them: 23 | 24 | * Anthony Sottile 25 | * Arvin Firouzi 26 | * Bruno Oliveira 27 | * Debi Mishra 28 | * Garrett Thomas 29 | * Hugo van Kemenade 30 | * Kelton Bassingthwaite 31 | * Kostis Anagnostopoulos 32 | * Lewis Cowles 33 | * Miro Hrončok 34 | * Ran Benita 35 | * Simon K 36 | * Zac Hatfield-Dodds 37 | 38 | 39 | Happy testing, 40 | The pytest Development Team 41 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.0.1.rst: -------------------------------------------------------------------------------- 1 | pytest-6.0.1 2 | ======================================= 3 | 4 | pytest 6.0.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/latest/changelog.html. 11 | 12 | Thanks to all who contributed to this release, among them: 13 | 14 | * Bruno Oliveira 15 | * Mattreex 16 | * Ran Benita 17 | * hp310780 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.0.2.rst: -------------------------------------------------------------------------------- 1 | pytest-6.0.2 2 | ======================================= 3 | 4 | pytest 6.0.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Ran Benita 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.1.0.rst: -------------------------------------------------------------------------------- 1 | pytest-6.1.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 6.1.0 release! 5 | 6 | This release contains new features, improvements, bug fixes, and breaking changes, so users 7 | are encouraged to take a look at the CHANGELOG carefully: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | * Anthony Sottile 22 | * Bruno Oliveira 23 | * C. Titus Brown 24 | * Drew Devereux 25 | * Faris A Chugthai 26 | * Florian Bruhin 27 | * Hugo van Kemenade 28 | * Hynek Schlawack 29 | * Joseph Lucas 30 | * Kamran Ahmad 31 | * Mattreex 32 | * Maximilian Cosmo Sitter 33 | * Ran Benita 34 | * Rüdiger Busche 35 | * Sam Estep 36 | * Sorin Sbarnea 37 | * Thomas Grainger 38 | * Vipul Kumar 39 | * Yutaro Ikeda 40 | * hp310780 41 | 42 | 43 | Happy testing, 44 | The pytest Development Team 45 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.1.1.rst: -------------------------------------------------------------------------------- 1 | pytest-6.1.1 2 | ======================================= 3 | 4 | pytest 6.1.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Ran Benita 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.1.2.rst: -------------------------------------------------------------------------------- 1 | pytest-6.1.2 2 | ======================================= 3 | 4 | pytest 6.1.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Manuel Mariñez 16 | * Ran Benita 17 | * Vasilis Gerakaris 18 | * William Jamir Silva 19 | 20 | 21 | Happy testing, 22 | The pytest Development Team 23 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.2.1.rst: -------------------------------------------------------------------------------- 1 | pytest-6.2.1 2 | ======================================= 3 | 4 | pytest 6.2.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Jakob van Santen 16 | * Ran Benita 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.2.2.rst: -------------------------------------------------------------------------------- 1 | pytest-6.2.2 2 | ======================================= 3 | 4 | pytest 6.2.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Adam Johnson 15 | * Bruno Oliveira 16 | * Chris NeJame 17 | * Ran Benita 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.2.3.rst: -------------------------------------------------------------------------------- 1 | pytest-6.2.3 2 | ======================================= 3 | 4 | pytest 6.2.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Ran Benita 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.2.4.rst: -------------------------------------------------------------------------------- 1 | pytest-6.2.4 2 | ======================================= 3 | 4 | pytest 6.2.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Christian Maurer 17 | * Florian Bruhin 18 | * Ran Benita 19 | 20 | 21 | Happy testing, 22 | The pytest Development Team 23 | -------------------------------------------------------------------------------- /doc/en/announce/release-6.2.5.rst: -------------------------------------------------------------------------------- 1 | pytest-6.2.5 2 | ======================================= 3 | 4 | pytest 6.2.5 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Brylie Christopher Oxley 17 | * Daniel Asztalos 18 | * Florian Bruhin 19 | * Jason Haugen 20 | * MapleCCC 21 | * Michał Górny 22 | * Miro Hrončok 23 | * Ran Benita 24 | * Ronny Pfannschmidt 25 | * Sylvain Bellemare 26 | * Thomas Güttler 27 | 28 | 29 | Happy testing, 30 | The pytest Development Team 31 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.0.1.rst: -------------------------------------------------------------------------------- 1 | pytest-7.0.1 2 | ======================================= 3 | 4 | pytest 7.0.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Ran Benita 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.1.0.rst: -------------------------------------------------------------------------------- 1 | pytest-7.1.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 7.1.0 release! 5 | 6 | This release contains new features, improvements, and bug fixes, 7 | the full list of changes is available in the changelog: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | * Akuli 22 | * Andrew Svetlov 23 | * Anthony Sottile 24 | * Brett Holman 25 | * Bruno Oliveira 26 | * Chris NeJame 27 | * Dan Alvizu 28 | * Elijah DeLee 29 | * Emmanuel Arias 30 | * Fabian Egli 31 | * Florian Bruhin 32 | * Gabor Szabo 33 | * Hasan Ramezani 34 | * Hugo van Kemenade 35 | * Kian Meng, Ang 36 | * Kojo Idrissa 37 | * Masaru Tsuchiyama 38 | * Olga Matoula 39 | * P. L. Lim 40 | * Ran Benita 41 | * Tobias Deiminger 42 | * Yuval Shimon 43 | * eduardo naufel schettino 44 | * Éric 45 | 46 | 47 | Happy testing, 48 | The pytest Development Team 49 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.1.1.rst: -------------------------------------------------------------------------------- 1 | pytest-7.1.1 2 | ======================================= 3 | 4 | pytest 7.1.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Ran Benita 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.1.2.rst: -------------------------------------------------------------------------------- 1 | pytest-7.1.2 2 | ======================================= 3 | 4 | pytest 7.1.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Hugo van Kemenade 17 | * Kian Eliasi 18 | * Ran Benita 19 | * Zac Hatfield-Dodds 20 | 21 | 22 | Happy testing, 23 | The pytest Development Team 24 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.1.3.rst: -------------------------------------------------------------------------------- 1 | pytest-7.1.3 2 | ======================================= 3 | 4 | pytest 7.1.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Gergely Kalmár 17 | * Nipunn Koorapati 18 | * Pax 19 | * Sviatoslav Sydorenko 20 | * Tim Hoffmann 21 | * Tony Narlock 22 | * Wolfremium 23 | * Zach OBrien 24 | * aizpurua23a 25 | 26 | 27 | Happy testing, 28 | The pytest Development Team 29 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.2.1.rst: -------------------------------------------------------------------------------- 1 | pytest-7.2.1 2 | ======================================= 3 | 4 | pytest 7.2.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Anthony Sottile 15 | * Bruno Oliveira 16 | * Daniel Valenzuela 17 | * Kadino 18 | * Prerak Patel 19 | * Ronny Pfannschmidt 20 | * Santiago Castro 21 | * s-padmanaban 22 | 23 | 24 | Happy testing, 25 | The pytest Development Team 26 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.2.2.rst: -------------------------------------------------------------------------------- 1 | pytest-7.2.2 2 | ======================================= 3 | 4 | pytest 7.2.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Garvit Shubham 16 | * Mahesh Vashishtha 17 | * Ramsey 18 | * Ronny Pfannschmidt 19 | * Teejay 20 | * q0w 21 | * vin01 22 | 23 | 24 | Happy testing, 25 | The pytest Development Team 26 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.3.1.rst: -------------------------------------------------------------------------------- 1 | pytest-7.3.1 2 | ======================================= 3 | 4 | pytest 7.3.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Ran Benita 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.3.2.rst: -------------------------------------------------------------------------------- 1 | pytest-7.3.2 2 | ======================================= 3 | 4 | pytest 7.3.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Adam J. Stewart 15 | * Alessio Izzo 16 | * Bruno Oliveira 17 | * Ran Benita 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.4.0.rst: -------------------------------------------------------------------------------- 1 | pytest-7.4.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 7.4.0 release! 5 | 6 | This release contains new features, improvements, and bug fixes, 7 | the full list of changes is available in the changelog: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | * Adam J. Stewart 22 | * Alessio Izzo 23 | * Alex 24 | * Alex Lambson 25 | * Brian Larsen 26 | * Bruno Oliveira 27 | * Bryan Ricker 28 | * Chris Mahoney 29 | * Facundo Batista 30 | * Florian Bruhin 31 | * Jarrett Keifer 32 | * Kenny Y 33 | * Miro Hrončok 34 | * Ran Benita 35 | * Roberto Aldera 36 | * Ronny Pfannschmidt 37 | * Sergey Kim 38 | * Stefanie Molin 39 | * Vijay Arora 40 | * Ville Skyttä 41 | * Zac Hatfield-Dodds 42 | * bzoracler 43 | * leeyueh 44 | * nondescryptid 45 | * theirix 46 | 47 | 48 | Happy testing, 49 | The pytest Development Team 50 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.4.1.rst: -------------------------------------------------------------------------------- 1 | pytest-7.4.1 2 | ======================================= 3 | 4 | pytest 7.4.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Florian Bruhin 16 | * Ran Benita 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.4.2.rst: -------------------------------------------------------------------------------- 1 | pytest-7.4.2 2 | ======================================= 3 | 4 | pytest 7.4.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.4.3.rst: -------------------------------------------------------------------------------- 1 | pytest-7.4.3 2 | ======================================= 3 | 4 | pytest 7.4.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Marc Mueller 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-7.4.4.rst: -------------------------------------------------------------------------------- 1 | pytest-7.4.4 2 | ======================================= 3 | 4 | pytest 7.4.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Ran Benita 16 | * Zac Hatfield-Dodds 17 | 18 | 19 | Happy testing, 20 | The pytest Development Team 21 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.0.0.rst: -------------------------------------------------------------------------------- 1 | pytest-8.0.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 8.0.0 release! 5 | 6 | This release contains new features, improvements, bug fixes, and breaking changes, so users 7 | are encouraged to take a look at the CHANGELOG carefully: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | * Bruno Oliveira 22 | * Ran Benita 23 | 24 | 25 | Happy testing, 26 | The pytest Development Team 27 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.0.0rc2.rst: -------------------------------------------------------------------------------- 1 | pytest-8.0.0rc2 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 8.0.0rc2 prerelease! 5 | 6 | This is a prerelease, not intended for production use, but to test the upcoming features and improvements 7 | in order to catch any major problems before the final version is released to the major public. 8 | 9 | We appreciate your help testing this out before the final release, making sure to report any 10 | regressions to our issue tracker: 11 | 12 | https://github.com/pytest-dev/pytest/issues 13 | 14 | When doing so, please include the string ``[prerelease]`` in the title. 15 | 16 | You can upgrade from PyPI via: 17 | 18 | pip install pytest==8.0.0rc2 19 | 20 | Users are encouraged to take a look at the CHANGELOG carefully: 21 | 22 | https://docs.pytest.org/en/release-8.0.0rc2/changelog.html 23 | 24 | Thanks to all the contributors to this release: 25 | 26 | * Ben Brown 27 | * Bruno Oliveira 28 | * Ran Benita 29 | 30 | 31 | Happy testing, 32 | The pytest Development Team 33 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.0.1.rst: -------------------------------------------------------------------------------- 1 | pytest-8.0.1 2 | ======================================= 3 | 4 | pytest 8.0.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Clément Robert 16 | * Pierre Sassoulas 17 | * Ran Benita 18 | 19 | 20 | Happy testing, 21 | The pytest Development Team 22 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.0.2.rst: -------------------------------------------------------------------------------- 1 | pytest-8.0.2 2 | ======================================= 3 | 4 | pytest 8.0.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Ran Benita 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.1.0.rst: -------------------------------------------------------------------------------- 1 | pytest-8.1.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 8.1.0 release! 5 | 6 | This release contains new features, improvements, and bug fixes, 7 | the full list of changes is available in the changelog: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | * Ben Brown 22 | * Ben Leith 23 | * Bruno Oliveira 24 | * Clément Robert 25 | * Dave Hall 26 | * Dương Quốc Khánh 27 | * Eero Vaher 28 | * Eric Larson 29 | * Fabian Sturm 30 | * Faisal Fawad 31 | * Florian Bruhin 32 | * Franck Charras 33 | * Joachim B Haga 34 | * John Litborn 35 | * Loïc Estève 36 | * Marc Bresson 37 | * Patrick Lannigan 38 | * Pierre Sassoulas 39 | * Ran Benita 40 | * Reagan Lee 41 | * Ronny Pfannschmidt 42 | * Russell Martin 43 | * clee2000 44 | * donghui 45 | * faph 46 | * jakkdl 47 | * mrbean-bremen 48 | * robotherapist 49 | * whysage 50 | * woutdenolf 51 | 52 | 53 | Happy testing, 54 | The pytest Development Team 55 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.1.1.rst: -------------------------------------------------------------------------------- 1 | pytest-8.1.1 2 | ======================================= 3 | 4 | pytest 8.1.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Ran Benita 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.1.2.rst: -------------------------------------------------------------------------------- 1 | pytest-8.1.2 2 | ======================================= 3 | 4 | pytest 8.1.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | 16 | 17 | Happy testing, 18 | The pytest Development Team 19 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.2.0.rst: -------------------------------------------------------------------------------- 1 | pytest-8.2.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 8.2.0 release! 5 | 6 | This release contains new features, improvements, and bug fixes, 7 | the full list of changes is available in the changelog: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | * Bruno Oliveira 22 | * Daniel Miller 23 | * Florian Bruhin 24 | * HolyMagician03-UMich 25 | * John Litborn 26 | * Levon Saldamli 27 | * Linghao Zhang 28 | * Manuel López-Ibáñez 29 | * Pierre Sassoulas 30 | * Ran Benita 31 | * Ronny Pfannschmidt 32 | * Sebastian Meyer 33 | * Shekhar verma 34 | * Tamir Duberstein 35 | * Tobias Stoeckmann 36 | * dj 37 | * jakkdl 38 | * poulami-sau 39 | * tserg 40 | 41 | 42 | Happy testing, 43 | The pytest Development Team 44 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.2.1.rst: -------------------------------------------------------------------------------- 1 | pytest-8.2.1 2 | ======================================= 3 | 4 | pytest 8.2.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Ran Benita 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.2.2.rst: -------------------------------------------------------------------------------- 1 | pytest-8.2.2 2 | ======================================= 3 | 4 | pytest 8.2.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Ran Benita 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.3.0.rst: -------------------------------------------------------------------------------- 1 | pytest-8.3.0 2 | ======================================= 3 | 4 | The pytest team is proud to announce the 8.3.0 release! 5 | 6 | This release contains new features, improvements, and bug fixes, 7 | the full list of changes is available in the changelog: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | * Anita Hammer 22 | * Ben Brown 23 | * Brian Okken 24 | * Bruno Oliveira 25 | * Cornelius Riemenschneider 26 | * Farbod Ahmadian 27 | * Florian Bruhin 28 | * Hynek Schlawack 29 | * James Frost 30 | * Jason R. Coombs 31 | * Jelle Zijlstra 32 | * Josh Soref 33 | * Marc Bresson 34 | * Michael Vogt 35 | * Nathan Goldbaum 36 | * Nicolas Simonds 37 | * Oliver Bestwalter 38 | * Pavel Březina 39 | * Pierre Sassoulas 40 | * Pradyun Gedam 41 | * Ran Benita 42 | * Ronny Pfannschmidt 43 | * SOUBHIK KUMAR MITRA 44 | * Sam Jirovec 45 | * Stavros Ntentos 46 | * Sviatoslav Sydorenko 47 | * Sviatoslav Sydorenko (Святослав Сидоренко) 48 | * Tomasz Kłoczko 49 | * Virendra Patil 50 | * Yutian Li 51 | * Zach Snicker 52 | * dj 53 | * holger krekel 54 | * joseph-sentry 55 | * lovetheguitar 56 | * neutraljump 57 | 58 | 59 | Happy testing, 60 | The pytest Development Team 61 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.3.1.rst: -------------------------------------------------------------------------------- 1 | pytest-8.3.1 2 | ======================================= 3 | 4 | pytest 8.3.1 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Ran Benita 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.3.2.rst: -------------------------------------------------------------------------------- 1 | pytest-8.3.2 2 | ======================================= 3 | 4 | pytest 8.3.2 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Ran Benita 15 | * Ronny Pfannschmidt 16 | 17 | 18 | Happy testing, 19 | The pytest Development Team 20 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.3.3.rst: -------------------------------------------------------------------------------- 1 | pytest-8.3.3 2 | ======================================= 3 | 4 | pytest 8.3.3 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Anthony Sottile 15 | * Avasam 16 | * Bruno Oliveira 17 | * Christian Clauss 18 | * Eugene Mwangi 19 | * Florian Bruhin 20 | * GTowers1 21 | * Nauman Ahmed 22 | * Pierre Sassoulas 23 | * Reagan Lee 24 | * Ronny Pfannschmidt 25 | * Stefaan Lippens 26 | * Sviatoslav Sydorenko (Святослав Сидоренко) 27 | * dongfangtianyu 28 | 29 | 30 | Happy testing, 31 | The pytest Development Team 32 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.3.4.rst: -------------------------------------------------------------------------------- 1 | pytest-8.3.4 2 | ======================================= 3 | 4 | pytest 8.3.4 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. To upgrade:: 7 | 8 | pip install --upgrade pytest 9 | 10 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 11 | 12 | Thanks to all of the contributors to this release: 13 | 14 | * Bruno Oliveira 15 | * Florian Bruhin 16 | * Frank Hoffmann 17 | * Jakob van Santen 18 | * Leonardus Chen 19 | * Pierre Sassoulas 20 | * Pradeep Kumar 21 | * Ran Benita 22 | * Serge Smertin 23 | * Stefaan Lippens 24 | * Sviatoslav Sydorenko (Святослав Сидоренко) 25 | * dongfangtianyu 26 | * suspe 27 | 28 | 29 | Happy testing, 30 | The pytest Development Team 31 | -------------------------------------------------------------------------------- /doc/en/announce/release-8.3.5.rst: -------------------------------------------------------------------------------- 1 | pytest-8.3.5 2 | ======================================= 3 | 4 | pytest 8.3.5 has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. 7 | 8 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 9 | 10 | Thanks to all of the contributors to this release: 11 | 12 | * Bruno Oliveira 13 | * Florian Bruhin 14 | * John Litborn 15 | * Kenny Y 16 | * Ran Benita 17 | * Sadra Barikbin 18 | * Vincent (Wen Yu) Ge 19 | * delta87 20 | * dongfangtianyu 21 | * mwychung 22 | * 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) 23 | 24 | 25 | Happy testing, 26 | The pytest Development Team 27 | -------------------------------------------------------------------------------- /doc/en/broken-dep-constraints.txt: -------------------------------------------------------------------------------- 1 | # This file contains transitive dependencies that need to be pinned for some reason. 2 | # Eventually this file will be empty, but in this case keep it around for future use. 3 | -------------------------------------------------------------------------------- /doc/en/conftest.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | collect_ignore = ["conf.py"] 5 | -------------------------------------------------------------------------------- /doc/en/contributing.rst: -------------------------------------------------------------------------------- 1 | .. _contributing: 2 | 3 | .. include:: ../../CONTRIBUTING.rst 4 | -------------------------------------------------------------------------------- /doc/en/development_guide.rst: -------------------------------------------------------------------------------- 1 | ================= 2 | Development Guide 3 | ================= 4 | 5 | The contributing guidelines are to be found :ref:`here `. 6 | The release procedure for pytest is documented on 7 | `GitHub `_. 8 | -------------------------------------------------------------------------------- /doc/en/example/assertion/global_testmodule_config/conftest.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import os.path 4 | 5 | import pytest 6 | 7 | 8 | mydir = os.path.dirname(__file__) 9 | 10 | 11 | def pytest_runtest_setup(item): 12 | if isinstance(item, pytest.Function): 13 | if not item.fspath.relto(mydir): 14 | return 15 | mod = item.getparent(pytest.Module).obj 16 | if hasattr(mod, "hello"): 17 | print(f"mod.hello {mod.hello!r}") 18 | -------------------------------------------------------------------------------- /doc/en/example/assertion/global_testmodule_config/test_hello_world.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | hello = "world" 5 | 6 | 7 | def test_func(): 8 | pass 9 | -------------------------------------------------------------------------------- /doc/en/example/assertion/test_failures.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import os.path 4 | import shutil 5 | 6 | 7 | failure_demo = os.path.join(os.path.dirname(__file__), "failure_demo.py") 8 | pytest_plugins = ("pytester",) 9 | 10 | 11 | def test_failure_demo_fails_properly(pytester): 12 | target = pytester.path.joinpath(os.path.basename(failure_demo)) 13 | shutil.copy(failure_demo, target) 14 | result = pytester.runpytest(target, syspathinsert=True) 15 | result.stdout.fnmatch_lines(["*44 failed*"]) 16 | assert result.ret != 0 17 | -------------------------------------------------------------------------------- /doc/en/example/conftest.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | collect_ignore = ["nonpython", "customdirectory"] 5 | -------------------------------------------------------------------------------- /doc/en/example/customdirectory/conftest.py: -------------------------------------------------------------------------------- 1 | # content of conftest.py 2 | from __future__ import annotations 3 | 4 | import json 5 | 6 | import pytest 7 | 8 | 9 | class ManifestDirectory(pytest.Directory): 10 | def collect(self): 11 | # The standard pytest behavior is to loop over all `test_*.py` files and 12 | # call `pytest_collect_file` on each file. This collector instead reads 13 | # the `manifest.json` file and only calls `pytest_collect_file` for the 14 | # files defined there. 15 | manifest_path = self.path / "manifest.json" 16 | manifest = json.loads(manifest_path.read_text(encoding="utf-8")) 17 | ihook = self.ihook 18 | for file in manifest["files"]: 19 | yield from ihook.pytest_collect_file( 20 | file_path=self.path / file, parent=self 21 | ) 22 | 23 | 24 | @pytest.hookimpl 25 | def pytest_collect_directory(path, parent): 26 | # Use our custom collector for directories containing a `manifest.json` file. 27 | if path.joinpath("manifest.json").is_file(): 28 | return ManifestDirectory.from_parent(parent=parent, path=path) 29 | # Otherwise fallback to the standard behavior. 30 | return None 31 | -------------------------------------------------------------------------------- /doc/en/example/customdirectory/pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/example/customdirectory/pytest.ini -------------------------------------------------------------------------------- /doc/en/example/customdirectory/tests/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "test_first.py", 4 | "test_second.py" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /doc/en/example/customdirectory/tests/test_first.py: -------------------------------------------------------------------------------- 1 | # content of test_first.py 2 | from __future__ import annotations 3 | 4 | 5 | def test_1(): 6 | pass 7 | -------------------------------------------------------------------------------- /doc/en/example/customdirectory/tests/test_second.py: -------------------------------------------------------------------------------- 1 | # content of test_second.py 2 | from __future__ import annotations 3 | 4 | 5 | def test_2(): 6 | pass 7 | -------------------------------------------------------------------------------- /doc/en/example/customdirectory/tests/test_third.py: -------------------------------------------------------------------------------- 1 | # content of test_third.py 2 | from __future__ import annotations 3 | 4 | 5 | def test_3(): 6 | pass 7 | -------------------------------------------------------------------------------- /doc/en/example/fixtures/test_fixtures_order_autouse.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture 7 | def order(): 8 | return [] 9 | 10 | 11 | @pytest.fixture 12 | def a(order): 13 | order.append("a") 14 | 15 | 16 | @pytest.fixture 17 | def b(a, order): 18 | order.append("b") 19 | 20 | 21 | @pytest.fixture(autouse=True) 22 | def c(b, order): 23 | order.append("c") 24 | 25 | 26 | @pytest.fixture 27 | def d(b, order): 28 | order.append("d") 29 | 30 | 31 | @pytest.fixture 32 | def e(d, order): 33 | order.append("e") 34 | 35 | 36 | @pytest.fixture 37 | def f(e, order): 38 | order.append("f") 39 | 40 | 41 | @pytest.fixture 42 | def g(f, c, order): 43 | order.append("g") 44 | 45 | 46 | def test_order_and_g(g, order): 47 | assert order == ["a", "b", "c", "d", "e", "f", "g"] 48 | -------------------------------------------------------------------------------- /doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture(scope="class") 7 | def order(): 8 | return [] 9 | 10 | 11 | @pytest.fixture(scope="class", autouse=True) 12 | def c1(order): 13 | order.append("c1") 14 | 15 | 16 | @pytest.fixture(scope="class") 17 | def c2(order): 18 | order.append("c2") 19 | 20 | 21 | @pytest.fixture(scope="class") 22 | def c3(order, c1): 23 | order.append("c3") 24 | 25 | 26 | class TestClassWithC1Request: 27 | def test_order(self, order, c1, c3): 28 | assert order == ["c1", "c3"] 29 | 30 | 31 | class TestClassWithoutC1Request: 32 | def test_order(self, order, c2): 33 | assert order == ["c1", "c2"] 34 | -------------------------------------------------------------------------------- /doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture 7 | def order(): 8 | return [] 9 | 10 | 11 | @pytest.fixture 12 | def c1(order): 13 | order.append("c1") 14 | 15 | 16 | @pytest.fixture 17 | def c2(order): 18 | order.append("c2") 19 | 20 | 21 | class TestClassWithAutouse: 22 | @pytest.fixture(autouse=True) 23 | def c3(self, order, c2): 24 | order.append("c3") 25 | 26 | def test_req(self, order, c1): 27 | assert order == ["c2", "c3", "c1"] 28 | 29 | def test_no_req(self, order): 30 | assert order == ["c2", "c3"] 31 | 32 | 33 | class TestClassWithoutAutouse: 34 | def test_req(self, order, c1): 35 | assert order == ["c1"] 36 | 37 | def test_no_req(self, order): 38 | assert order == [] 39 | -------------------------------------------------------------------------------- /doc/en/example/fixtures/test_fixtures_order_dependencies.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture 7 | def order(): 8 | return [] 9 | 10 | 11 | @pytest.fixture 12 | def a(order): 13 | order.append("a") 14 | 15 | 16 | @pytest.fixture 17 | def b(a, order): 18 | order.append("b") 19 | 20 | 21 | @pytest.fixture 22 | def c(b, order): 23 | order.append("c") 24 | 25 | 26 | @pytest.fixture 27 | def d(c, b, order): 28 | order.append("d") 29 | 30 | 31 | @pytest.fixture 32 | def e(d, b, order): 33 | order.append("e") 34 | 35 | 36 | @pytest.fixture 37 | def f(e, order): 38 | order.append("f") 39 | 40 | 41 | @pytest.fixture 42 | def g(f, c, order): 43 | order.append("g") 44 | 45 | 46 | def test_order(g, order): 47 | assert order == ["a", "b", "c", "d", "e", "f", "g"] 48 | -------------------------------------------------------------------------------- /doc/en/example/fixtures/test_fixtures_order_scope.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture(scope="session") 7 | def order(): 8 | return [] 9 | 10 | 11 | @pytest.fixture 12 | def func(order): 13 | order.append("function") 14 | 15 | 16 | @pytest.fixture(scope="class") 17 | def cls(order): 18 | order.append("class") 19 | 20 | 21 | @pytest.fixture(scope="module") 22 | def mod(order): 23 | order.append("module") 24 | 25 | 26 | @pytest.fixture(scope="package") 27 | def pack(order): 28 | order.append("package") 29 | 30 | 31 | @pytest.fixture(scope="session") 32 | def sess(order): 33 | order.append("session") 34 | 35 | 36 | class TestClass: 37 | def test_order(self, func, cls, mod, pack, sess, order): 38 | assert order == ["session", "package", "module", "class", "function"] 39 | -------------------------------------------------------------------------------- /doc/en/example/fixtures/test_fixtures_request_different_scope.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture 7 | def order(): 8 | return [] 9 | 10 | 11 | @pytest.fixture 12 | def outer(order, inner): 13 | order.append("outer") 14 | 15 | 16 | class TestOne: 17 | @pytest.fixture 18 | def inner(self, order): 19 | order.append("one") 20 | 21 | def test_order(self, order, outer): 22 | assert order == ["one", "outer"] 23 | 24 | 25 | class TestTwo: 26 | @pytest.fixture 27 | def inner(self, order): 28 | order.append("two") 29 | 30 | def test_order(self, order, outer): 31 | assert order == ["two", "outer"] 32 | -------------------------------------------------------------------------------- /doc/en/example/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _examples: 3 | 4 | Examples and customization tricks 5 | ================================= 6 | 7 | Here is a (growing) list of examples. :ref:`Contact ` us if you 8 | need more examples or have questions. Also take a look at the 9 | :ref:`comprehensive documentation ` which contains many example 10 | snippets as well. Also, `pytest on stackoverflow.com 11 | `_ often comes with example 12 | answers. 13 | 14 | For basic examples, see 15 | 16 | - :ref:`get-started` for basic introductory examples 17 | - :ref:`assert` for basic assertion examples 18 | - :ref:`Fixtures ` for basic fixture/setup examples 19 | - :ref:`parametrize` for basic test function parametrization 20 | - :ref:`unittest` for basic unittest integration 21 | 22 | The following examples aim at various use cases you might encounter. 23 | 24 | .. toctree:: 25 | :maxdepth: 2 26 | 27 | reportingdemo 28 | simple 29 | parametrize 30 | markers 31 | special 32 | pythoncollection 33 | nonpython 34 | customdirectory 35 | -------------------------------------------------------------------------------- /doc/en/example/nonpython/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/example/nonpython/__init__.py -------------------------------------------------------------------------------- /doc/en/example/nonpython/test_simple.yaml: -------------------------------------------------------------------------------- 1 | # test_simple.yaml 2 | ok: 3 | sub1: sub1 4 | 5 | hello: 6 | world: world 7 | some: other 8 | -------------------------------------------------------------------------------- /doc/en/example/pythoncollection.py: -------------------------------------------------------------------------------- 1 | # run this with $ pytest --collect-only test_collectonly.py 2 | # 3 | from __future__ import annotations 4 | 5 | 6 | def test_function(): 7 | pass 8 | 9 | 10 | class TestClass: 11 | def test_method(self): 12 | pass 13 | 14 | def test_anothermethod(self): 15 | pass 16 | -------------------------------------------------------------------------------- /doc/en/example/xfail_demo.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import pytest 4 | 5 | 6 | xfail = pytest.mark.xfail 7 | 8 | 9 | @xfail 10 | def test_hello(): 11 | assert 0 12 | 13 | 14 | @xfail(run=False) 15 | def test_hello2(): 16 | assert 0 17 | 18 | 19 | @xfail("hasattr(os, 'sep')") 20 | def test_hello3(): 21 | assert 0 22 | 23 | 24 | @xfail(reason="bug 110") 25 | def test_hello4(): 26 | assert 0 27 | 28 | 29 | @xfail('pytest.__version__[0] != "17"') 30 | def test_hello5(): 31 | assert 0 32 | 33 | 34 | def test_hello6(): 35 | pytest.xfail("reason") 36 | 37 | 38 | @xfail(raises=IndexError) 39 | def test_hello7(): 40 | x = [] 41 | x[1] = 1 42 | -------------------------------------------------------------------------------- /doc/en/explanation/index.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | .. _explanation: 4 | 5 | Explanation 6 | ================ 7 | 8 | .. toctree:: 9 | :maxdepth: 1 10 | 11 | anatomy 12 | fixtures 13 | goodpractices 14 | pythonpath 15 | types 16 | ci 17 | flaky 18 | -------------------------------------------------------------------------------- /doc/en/funcargs.rst: -------------------------------------------------------------------------------- 1 | 2 | ======================================================= 3 | funcargs: resource injection and parametrization 4 | ======================================================= 5 | 6 | pytest-2.3 introduces major refinements to fixture management 7 | of which the funcarg mechanism introduced with pytest-2.0 remains 8 | a core part. The documentation has been refactored as well 9 | and you can read on here: 10 | 11 | - :ref:`fixtures` 12 | - :ref:`parametrize` 13 | - :ref:`funcargcompare` 14 | -------------------------------------------------------------------------------- /doc/en/how-to/bash-completion.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _bash_completion: 3 | 4 | How to set up bash completion 5 | ============================= 6 | 7 | When using bash as your shell, ``pytest`` can use argcomplete 8 | (https://kislyuk.github.io/argcomplete/) for auto-completion. 9 | For this ``argcomplete`` needs to be installed **and** enabled. 10 | 11 | Install argcomplete using: 12 | 13 | .. code-block:: bash 14 | 15 | sudo pip install 'argcomplete>=0.5.7' 16 | 17 | For global activation of all argcomplete enabled python applications run: 18 | 19 | .. code-block:: bash 20 | 21 | sudo activate-global-python-argcomplete 22 | 23 | For permanent (but not global) ``pytest`` activation, use: 24 | 25 | .. code-block:: bash 26 | 27 | register-python-argcomplete pytest >> ~/.bashrc 28 | 29 | For one-time activation of argcomplete for ``pytest`` only, use: 30 | 31 | .. code-block:: bash 32 | 33 | eval "$(register-python-argcomplete pytest)" 34 | -------------------------------------------------------------------------------- /doc/en/how-to/existingtestsuite.rst: -------------------------------------------------------------------------------- 1 | .. _existingtestsuite: 2 | 3 | How to use pytest with an existing test suite 4 | ============================================== 5 | 6 | Pytest can be used with most existing test suites, but its 7 | behavior differs from other test runners such as Python's 8 | default unittest framework. 9 | 10 | Before using this section you will want to :ref:`install pytest `. 11 | 12 | Running an existing test suite with pytest 13 | --------------------------------------------- 14 | 15 | Say you want to contribute to an existing repository somewhere. 16 | After pulling the code into your development space using some 17 | flavor of version control and (optionally) setting up a virtualenv 18 | you will want to run: 19 | 20 | .. code-block:: bash 21 | 22 | cd 23 | pip install -e . # Environment dependent alternatives include 24 | # 'python setup.py develop' and 'conda develop' 25 | 26 | in your project root. This will set up a symlink to your code in 27 | site-packages, allowing you to edit your code while your tests 28 | run against it as if it were installed. 29 | 30 | Setting up your project in development mode lets you avoid having to 31 | reinstall every time you want to run your tests, and is less brittle than 32 | mucking about with sys.path to point your tests at local code. 33 | 34 | Also consider using :ref:`tox `. 35 | -------------------------------------------------------------------------------- /doc/en/how-to/index.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | .. _how-to: 4 | 5 | How-to guides 6 | ================ 7 | 8 | Core pytest functionality 9 | ------------------------- 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | 14 | usage 15 | assert 16 | fixtures 17 | mark 18 | parametrize 19 | tmp_path 20 | monkeypatch 21 | doctest 22 | cache 23 | 24 | Test output and outcomes 25 | ---------------------------- 26 | 27 | .. toctree:: 28 | :maxdepth: 1 29 | 30 | failures 31 | output 32 | logging 33 | capture-stdout-stderr 34 | capture-warnings 35 | skipping 36 | 37 | Plugins 38 | ---------------------------- 39 | 40 | .. toctree:: 41 | :maxdepth: 1 42 | 43 | plugins 44 | writing_plugins 45 | writing_hook_functions 46 | 47 | pytest and other test systems 48 | ----------------------------- 49 | 50 | .. toctree:: 51 | :maxdepth: 1 52 | 53 | existingtestsuite 54 | unittest 55 | xunit_setup 56 | 57 | pytest development environment 58 | ------------------------------ 59 | 60 | .. toctree:: 61 | :maxdepth: 1 62 | 63 | bash-completion 64 | -------------------------------------------------------------------------------- /doc/en/img/cramer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/cramer2.png -------------------------------------------------------------------------------- /doc/en/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/favicon.png -------------------------------------------------------------------------------- /doc/en/img/freiburg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/freiburg2.jpg -------------------------------------------------------------------------------- /doc/en/img/gaynor3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/gaynor3.png -------------------------------------------------------------------------------- /doc/en/img/keleshev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/keleshev.png -------------------------------------------------------------------------------- /doc/en/img/pullrequest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/pullrequest.png -------------------------------------------------------------------------------- /doc/en/img/pylib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/pylib.png -------------------------------------------------------------------------------- /doc/en/img/theuni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/doc/en/img/theuni.png -------------------------------------------------------------------------------- /doc/en/naming20.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _naming20: 3 | 4 | New pytest names in 2.0 (flat is better than nested) 5 | ---------------------------------------------------- 6 | 7 | If you used older version of the ``py`` distribution (which 8 | included the py.test command line tool and Python name space) 9 | you accessed helpers and possibly collection classes through 10 | the ``py.test`` Python namespaces. The new ``pytest`` 11 | Python module flatly provides the same objects, following 12 | these renaming rules:: 13 | 14 | py.test.XYZ -> pytest.XYZ 15 | py.test.collect.XYZ -> pytest.XYZ 16 | py.test.cmdline.main -> pytest.main 17 | 18 | The old ``py.test.*`` ways to access functionality remain 19 | valid but you are encouraged to do global renaming according 20 | to the above rules in your test code. 21 | -------------------------------------------------------------------------------- /doc/en/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | # just defined to prevent the root level tox.ini from kicking in 3 | -------------------------------------------------------------------------------- /doc/en/recwarn.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | This page has been moved, please see :ref:`assertwarnings`. 4 | -------------------------------------------------------------------------------- /doc/en/reference/exit-codes.rst: -------------------------------------------------------------------------------- 1 | .. _exit-codes: 2 | 3 | Exit codes 4 | ======================================================== 5 | 6 | Running ``pytest`` can result in six different exit codes: 7 | 8 | :Exit code 0: All tests were collected and passed successfully 9 | :Exit code 1: Tests were collected and run but some of the tests failed 10 | :Exit code 2: Test execution was interrupted by the user 11 | :Exit code 3: Internal error happened while executing tests 12 | :Exit code 4: pytest command line usage error 13 | :Exit code 5: No tests were collected 14 | 15 | They are represented by the :class:`pytest.ExitCode` enum. The exit codes being a part of the public API can be imported and accessed directly using: 16 | 17 | .. code-block:: python 18 | 19 | from pytest import ExitCode 20 | 21 | .. note:: 22 | 23 | If you would like to customize the exit code in some scenarios, specially when 24 | no tests are collected, consider using the 25 | `pytest-custom_exit_code `__ 26 | plugin. 27 | -------------------------------------------------------------------------------- /doc/en/reference/index.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | .. _reference: 4 | 5 | Reference guides 6 | ================ 7 | 8 | .. toctree:: 9 | :maxdepth: 1 10 | 11 | reference 12 | fixtures 13 | customize 14 | exit-codes 15 | plugin_list 16 | -------------------------------------------------------------------------------- /doc/en/requirements.txt: -------------------------------------------------------------------------------- 1 | -c broken-dep-constraints.txt 2 | pluggy>=1.5.0 3 | pygments-pytest>=2.3.0 4 | sphinx-removed-in>=0.2.0 5 | sphinx>=7 6 | sphinxcontrib-trio 7 | sphinxcontrib-svg2pdfconverter 8 | furo 9 | sphinxcontrib-towncrier 10 | sphinx-issues 11 | -------------------------------------------------------------------------------- /doc/en/sponsor.rst: -------------------------------------------------------------------------------- 1 | Sponsor 2 | ======= 3 | 4 | pytest is maintained by a team of volunteers from all around the world in their free time. While 5 | we work on pytest because we love the project and use it daily at our daily jobs, monetary 6 | compensation when possible is welcome to justify time away from friends, family and personal time. 7 | 8 | Money is also used to fund local sprints, merchandising (stickers to distribute in conferences for example) 9 | and every few years a large sprint involving all members. 10 | 11 | OpenCollective 12 | -------------- 13 | 14 | `Open Collective`_ is an online funding platform for open and transparent communities. 15 | It provide tools to raise money and share your finances in full transparency. 16 | 17 | It is the platform of choice for individuals and companies that want to make one-time or 18 | monthly donations directly to the project. 19 | 20 | See more details in the `pytest collective`_. 21 | 22 | 23 | .. _Tidelift: https://tidelift.com 24 | .. _Tidelift subscription: https://tidelift.com/subscription/pkg/pypi-pytest 25 | .. _Open Collective: https://opencollective.com 26 | .. _pytest collective: https://opencollective.com/pytest 27 | -------------------------------------------------------------------------------- /doc/en/yieldfixture.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | .. _yieldfixture: 4 | 5 | "yield_fixture" functions 6 | --------------------------------------------------------------- 7 | 8 | 9 | 10 | 11 | 12 | .. important:: 13 | Since pytest-3.0, fixtures using the normal ``fixture`` decorator can use a ``yield`` 14 | statement to provide fixture values and execute teardown code, exactly like ``yield_fixture`` 15 | in previous versions. 16 | 17 | Marking functions as ``yield_fixture`` is still supported, but deprecated and should not 18 | be used in new code. 19 | -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | latest-release-notes.md 2 | -------------------------------------------------------------------------------- /scripts/release.major.rst: -------------------------------------------------------------------------------- 1 | pytest-{version} 2 | ======================================= 3 | 4 | The pytest team is proud to announce the {version} release! 5 | 6 | This release contains new features, improvements, bug fixes, and breaking changes, so users 7 | are encouraged to take a look at the CHANGELOG carefully: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | {contributors} 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /scripts/release.minor.rst: -------------------------------------------------------------------------------- 1 | pytest-{version} 2 | ======================================= 3 | 4 | The pytest team is proud to announce the {version} release! 5 | 6 | This release contains new features, improvements, and bug fixes, 7 | the full list of changes is available in the changelog: 8 | 9 | https://docs.pytest.org/en/stable/changelog.html 10 | 11 | For complete documentation, please visit: 12 | 13 | https://docs.pytest.org/en/stable/ 14 | 15 | As usual, you can upgrade from PyPI via: 16 | 17 | pip install -U pytest 18 | 19 | Thanks to all of the contributors to this release: 20 | 21 | {contributors} 22 | 23 | Happy testing, 24 | The pytest Development Team 25 | -------------------------------------------------------------------------------- /scripts/release.patch.rst: -------------------------------------------------------------------------------- 1 | pytest-{version} 2 | ======================================= 3 | 4 | pytest {version} has just been released to PyPI. 5 | 6 | This is a bug-fix release, being a drop-in replacement. 7 | 8 | The full changelog is available at https://docs.pytest.org/en/stable/changelog.html. 9 | 10 | Thanks to all of the contributors to this release: 11 | 12 | {contributors} 13 | 14 | Happy testing, 15 | The pytest Development Team 16 | -------------------------------------------------------------------------------- /scripts/release.pre.rst: -------------------------------------------------------------------------------- 1 | pytest-{version} 2 | ======================================= 3 | 4 | The pytest team is proud to announce the {version} prerelease! 5 | 6 | This is a prerelease, not intended for production use, but to test the upcoming features and improvements 7 | in order to catch any major problems before the final version is released to the major public. 8 | 9 | We appreciate your help testing this out before the final release, making sure to report any 10 | regressions to our issue tracker: 11 | 12 | https://github.com/pytest-dev/pytest/issues 13 | 14 | When doing so, please include the string ``[prerelease]`` in the title. 15 | 16 | You can upgrade from PyPI via: 17 | 18 | pip install pytest=={version} 19 | 20 | Users are encouraged to take a look at the CHANGELOG carefully: 21 | 22 | https://docs.pytest.org/en/{doc_version}/changelog.html 23 | 24 | Thanks to all the contributors to this release: 25 | 26 | {contributors} 27 | 28 | Happy testing, 29 | The pytest Development Team 30 | -------------------------------------------------------------------------------- /src/_pytest/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | __all__ = ["__version__", "version_tuple"] 5 | 6 | try: 7 | from ._version import version as __version__ 8 | from ._version import version_tuple 9 | except ImportError: # pragma: no cover 10 | # broken installation, we don't even try 11 | # unknown only works because we do poor mans version compare 12 | __version__ = "unknown" 13 | version_tuple = (0, 0, "unknown") 14 | -------------------------------------------------------------------------------- /src/_pytest/_code/__init__.py: -------------------------------------------------------------------------------- 1 | """Python inspection/code generation API.""" 2 | 3 | from __future__ import annotations 4 | 5 | from .code import Code 6 | from .code import ExceptionInfo 7 | from .code import filter_traceback 8 | from .code import Frame 9 | from .code import getfslineno 10 | from .code import Traceback 11 | from .code import TracebackEntry 12 | from .source import getrawcode 13 | from .source import Source 14 | 15 | 16 | __all__ = [ 17 | "Code", 18 | "ExceptionInfo", 19 | "Frame", 20 | "Source", 21 | "Traceback", 22 | "TracebackEntry", 23 | "filter_traceback", 24 | "getfslineno", 25 | "getrawcode", 26 | ] 27 | -------------------------------------------------------------------------------- /src/_pytest/_io/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from .terminalwriter import get_terminal_width 4 | from .terminalwriter import TerminalWriter 5 | 6 | 7 | __all__ = [ 8 | "TerminalWriter", 9 | "get_terminal_width", 10 | ] 11 | -------------------------------------------------------------------------------- /src/_pytest/_py/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/src/_pytest/_py/__init__.py -------------------------------------------------------------------------------- /src/_pytest/config/exceptions.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import final 4 | 5 | 6 | @final 7 | class UsageError(Exception): 8 | """Error in pytest usage or invocation.""" 9 | 10 | 11 | class PrintHelp(Exception): 12 | """Raised when pytest should print its help to skip the rest of the 13 | argument parsing and validation.""" 14 | -------------------------------------------------------------------------------- /src/_pytest/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/src/_pytest/py.typed -------------------------------------------------------------------------------- /src/_pytest/setupplan.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from _pytest.config import Config 4 | from _pytest.config import ExitCode 5 | from _pytest.config.argparsing import Parser 6 | from _pytest.fixtures import FixtureDef 7 | from _pytest.fixtures import SubRequest 8 | import pytest 9 | 10 | 11 | def pytest_addoption(parser: Parser) -> None: 12 | group = parser.getgroup("debugconfig") 13 | group.addoption( 14 | "--setupplan", 15 | "--setup-plan", 16 | action="store_true", 17 | help="Show what fixtures and tests would be executed but " 18 | "don't execute anything", 19 | ) 20 | 21 | 22 | @pytest.hookimpl(tryfirst=True) 23 | def pytest_fixture_setup( 24 | fixturedef: FixtureDef[object], request: SubRequest 25 | ) -> object | None: 26 | # Will return a dummy fixture if the setuponly option is provided. 27 | if request.config.option.setupplan: 28 | my_cache_key = fixturedef.cache_key(request) 29 | fixturedef.cached_result = (None, my_cache_key, None) 30 | return fixturedef.cached_result 31 | return None 32 | 33 | 34 | @pytest.hookimpl(tryfirst=True) 35 | def pytest_cmdline_main(config: Config) -> int | ExitCode | None: 36 | if config.option.setupplan: 37 | config.option.setuponly = True 38 | config.option.setupshow = True 39 | return None 40 | -------------------------------------------------------------------------------- /src/_pytest/tracemalloc.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | def tracemalloc_message(source: object) -> str: 5 | if source is None: 6 | return "" 7 | 8 | try: 9 | import tracemalloc 10 | except ImportError: 11 | return "" 12 | 13 | tb = tracemalloc.get_object_traceback(source) 14 | if tb is not None: 15 | formatted_tb = "\n".join(tb.format()) 16 | # Use a leading new line to better separate the (large) output 17 | # from the traceback to the previous warning text. 18 | return f"\nObject allocated at:\n{formatted_tb}" 19 | # No need for a leading new line. 20 | url = "https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings" 21 | return ( 22 | "Enable tracemalloc to get traceback where the object was allocated.\n" 23 | f"See {url} for more info." 24 | ) 25 | -------------------------------------------------------------------------------- /src/py.py: -------------------------------------------------------------------------------- 1 | # shim for pylib going away 2 | # if pylib is installed this file will get skipped 3 | # (`py/__init__.py` has higher precedence) 4 | from __future__ import annotations 5 | 6 | import sys 7 | 8 | import _pytest._py.error as error 9 | import _pytest._py.path as path 10 | 11 | 12 | sys.modules["py.error"] = error 13 | sys.modules["py.path"] = path 14 | 15 | __all__ = ["error", "path"] 16 | -------------------------------------------------------------------------------- /src/pytest/__main__.py: -------------------------------------------------------------------------------- 1 | """The pytest entry point.""" 2 | 3 | from __future__ import annotations 4 | 5 | import pytest 6 | 7 | 8 | if __name__ == "__main__": 9 | raise SystemExit(pytest.console_main()) 10 | -------------------------------------------------------------------------------- /src/pytest/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/src/pytest/py.typed -------------------------------------------------------------------------------- /testing/example_scripts/README.rst: -------------------------------------------------------------------------------- 1 | Example test scripts 2 | ===================== 3 | 4 | 5 | The files in this folder are not direct tests, but rather example test suites that demonstrate certain issues/behaviours. 6 | 7 | In the future we will move part of the content of the acceptance tests here in order to have directly testable code instead of writing out things and then running them in nested pytest sessions/subprocesses. 8 | 9 | This will aid debugging and comprehension. 10 | -------------------------------------------------------------------------------- /testing/example_scripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/__init__.py -------------------------------------------------------------------------------- /testing/example_scripts/acceptance/fixture_mock_integration.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | """Reproduces issue #3774""" 3 | 4 | from __future__ import annotations 5 | 6 | from unittest import mock 7 | 8 | import pytest 9 | 10 | 11 | config = {"mykey": "ORIGINAL"} 12 | 13 | 14 | @pytest.fixture(scope="function") 15 | @mock.patch.dict(config, {"mykey": "MOCKED"}) 16 | def my_fixture(): 17 | return config["mykey"] 18 | 19 | 20 | def test_foobar(my_fixture): 21 | assert my_fixture == "MOCKED" 22 | -------------------------------------------------------------------------------- /testing/example_scripts/collect/collect_init_tests/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | python_files = *.py 3 | -------------------------------------------------------------------------------- /testing/example_scripts/collect/collect_init_tests/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_init(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/collect/collect_init_tests/tests/test_foo.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_foo(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/collect/package_infinite_recursion/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/collect/package_infinite_recursion/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def pytest_ignore_collect(collection_path): 6 | return False 7 | -------------------------------------------------------------------------------- /testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py -------------------------------------------------------------------------------- /testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_init(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_foo(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/config/collect_pytest_prefix/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/config/collect_pytest_prefix/conftest.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | class pytest_something: 5 | pass 6 | -------------------------------------------------------------------------------- /testing/example_scripts/config/collect_pytest_prefix/test_foo.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_foo(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/conftest_usageerror/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/conftest_usageerror/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/conftest_usageerror/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def pytest_configure(config): 6 | import pytest 7 | 8 | raise pytest.UsageError("hello") 9 | 10 | 11 | def pytest_unconfigure(config): 12 | print("pytest_unconfigure_called") 13 | -------------------------------------------------------------------------------- /testing/example_scripts/customdirectory/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | # content of conftest.py 3 | from __future__ import annotations 4 | 5 | import json 6 | 7 | import pytest 8 | 9 | 10 | class ManifestDirectory(pytest.Directory): 11 | def collect(self): 12 | manifest_path = self.path / "manifest.json" 13 | manifest = json.loads(manifest_path.read_text(encoding="utf-8")) 14 | ihook = self.ihook 15 | for file in manifest["files"]: 16 | yield from ihook.pytest_collect_file( 17 | file_path=self.path / file, parent=self 18 | ) 19 | 20 | 21 | @pytest.hookimpl 22 | def pytest_collect_directory(path, parent): 23 | if path.joinpath("manifest.json").is_file(): 24 | return ManifestDirectory.from_parent(parent=parent, path=path) 25 | return None 26 | -------------------------------------------------------------------------------- /testing/example_scripts/customdirectory/pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/customdirectory/pytest.ini -------------------------------------------------------------------------------- /testing/example_scripts/customdirectory/tests/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "test_first.py", 4 | "test_second.py" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /testing/example_scripts/customdirectory/tests/test_first.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | # content of test_first.py 3 | from __future__ import annotations 4 | 5 | 6 | def test_1(): 7 | pass 8 | -------------------------------------------------------------------------------- /testing/example_scripts/customdirectory/tests/test_second.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | # content of test_second.py 3 | from __future__ import annotations 4 | 5 | 6 | def test_2(): 7 | pass 8 | -------------------------------------------------------------------------------- /testing/example_scripts/customdirectory/tests/test_third.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | # content of test_third.py 3 | from __future__ import annotations 4 | 5 | 6 | def test_3(): 7 | pass 8 | -------------------------------------------------------------------------------- /testing/example_scripts/dataclasses/test_compare_dataclasses.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from dataclasses import dataclass 4 | from dataclasses import field 5 | 6 | 7 | def test_dataclasses() -> None: 8 | @dataclass 9 | class SimpleDataObject: 10 | field_a: int = field() 11 | field_b: str = field() 12 | 13 | left = SimpleDataObject(1, "b") 14 | right = SimpleDataObject(1, "c") 15 | 16 | assert left == right 17 | -------------------------------------------------------------------------------- /testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from dataclasses import dataclass 4 | from dataclasses import field 5 | 6 | 7 | def test_dataclasses_with_attribute_comparison_off() -> None: 8 | @dataclass 9 | class SimpleDataObject: 10 | field_a: int = field() 11 | field_b: str = field(compare=False) 12 | 13 | left = SimpleDataObject(1, "b") 14 | right = SimpleDataObject(1, "c") 15 | 16 | assert left == right 17 | -------------------------------------------------------------------------------- /testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from dataclasses import dataclass 4 | from dataclasses import field 5 | 6 | 7 | def test_dataclasses_verbose() -> None: 8 | @dataclass 9 | class SimpleDataObject: 10 | field_a: int = field() 11 | field_b: str = field() 12 | 13 | left = SimpleDataObject(1, "b") 14 | right = SimpleDataObject(1, "c") 15 | 16 | assert left == right 17 | -------------------------------------------------------------------------------- /testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from dataclasses import dataclass 4 | from dataclasses import field 5 | 6 | 7 | def test_dataclasses() -> None: 8 | @dataclass 9 | class SimpleDataObject: 10 | field_a: int = field() 11 | field_b: str = field() 12 | 13 | def __eq__(self, o: object, /) -> bool: 14 | return super().__eq__(o) 15 | 16 | left = SimpleDataObject(1, "b") 17 | right = SimpleDataObject(1, "c") 18 | 19 | assert left == right 20 | -------------------------------------------------------------------------------- /testing/example_scripts/dataclasses/test_compare_initvar.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | from dataclasses import dataclass 5 | from dataclasses import InitVar 6 | 7 | 8 | @dataclass 9 | class Foo: 10 | init_only: InitVar[int] 11 | real_attr: int 12 | 13 | 14 | def test_demonstrate(): 15 | assert Foo(1, 2) == Foo(1, 3) 16 | -------------------------------------------------------------------------------- /testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | from dataclasses import dataclass 5 | 6 | 7 | @dataclass 8 | class S: 9 | a: int 10 | b: str 11 | 12 | 13 | @dataclass 14 | class C: 15 | c: S 16 | d: S 17 | 18 | 19 | @dataclass 20 | class C2: 21 | e: C 22 | f: S 23 | 24 | 25 | @dataclass 26 | class C3: 27 | g: S 28 | h: C2 29 | i: str 30 | j: str 31 | 32 | 33 | def test_recursive_dataclasses(): 34 | left = C3( 35 | S(10, "ten"), 36 | C2(C(S(1, "one"), S(2, "two")), S(2, "three")), 37 | "equal", 38 | "left", 39 | ) 40 | right = C3( 41 | S(20, "xxx"), 42 | C2(C(S(1, "one"), S(2, "yyy")), S(3, "three")), 43 | "equal", 44 | "right", 45 | ) 46 | 47 | assert left == right 48 | -------------------------------------------------------------------------------- /testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from dataclasses import dataclass 4 | from dataclasses import field 5 | 6 | 7 | def test_comparing_two_different_data_classes() -> None: 8 | @dataclass 9 | class SimpleDataObjectOne: 10 | field_a: int = field() 11 | field_b: str = field() 12 | 13 | @dataclass 14 | class SimpleDataObjectTwo: 15 | field_a: int = field() 16 | field_b: str = field() 17 | 18 | left = SimpleDataObjectOne(1, "b") 19 | right = SimpleDataObjectTwo(1, "c") 20 | 21 | assert left != right # type: ignore[comparison-overlap] 22 | -------------------------------------------------------------------------------- /testing/example_scripts/doctest/main_py/__main__.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_this_is_ignored(): 6 | assert True 7 | -------------------------------------------------------------------------------- /testing/example_scripts/doctest/main_py/test_normal_module.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_doc(): 6 | """ 7 | >>> 10 > 5 8 | True 9 | """ 10 | assert False 11 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/custom_item/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/fixtures/custom_item/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/custom_item/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | class CustomItem(pytest.Item): 8 | def runtest(self): 9 | pass 10 | 11 | 12 | class CustomFile(pytest.File): 13 | def collect(self): 14 | yield CustomItem.from_parent(name="foo", parent=self) 15 | 16 | 17 | def pytest_collect_file(file_path, parent): 18 | return CustomFile.from_parent(path=file_path, parent=parent) 19 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/custom_item/foo/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/fixtures/custom_item/foo/__init__.py -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/custom_item/foo/test_foo.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def arg1(request): 9 | with pytest.raises(pytest.FixtureLookupError): 10 | request.getfixturevalue("arg2") 11 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/test_in_sub1.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_1(arg1): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def arg2(request): 9 | pytest.raises(Exception, request.getfixturevalue, "arg1") 10 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/test_in_sub2.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_2(arg2): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def fix1(fix2): 9 | return 1 10 | 11 | 12 | @pytest.fixture 13 | def fix2(fix1): 14 | return 1 15 | 16 | 17 | def test(fix1): 18 | pass 19 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def spam(): 9 | return "spam" 10 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def spam(spam): 9 | return spam * 2 10 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/test_spam.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_spam(spam): 6 | assert spam == "spamspam" 7 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def spam(): 9 | return "spam" 10 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/test_extend_fixture_conftest_module.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def spam(spam): 9 | return spam * 2 10 | 11 | 12 | def test_spam(spam): 13 | assert spam == "spamspam" 14 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def spam(): 9 | return "spam" 10 | 11 | 12 | class TestSpam: 13 | @pytest.fixture 14 | def spam(self, spam): 15 | return spam * 2 16 | 17 | def test_spam(self, spam): 18 | assert spam == "spamspam" 19 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def some(request): 9 | return request.function.__name__ 10 | 11 | 12 | @pytest.fixture 13 | def other(request): 14 | return 42 15 | 16 | 17 | def test_func(some, other): 18 | pass 19 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | class TestClass: 8 | @pytest.fixture 9 | def something(self, request): 10 | return request.instance 11 | 12 | def test_method(self, something): 13 | assert something is self 14 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def something(request): 9 | return request.function.__name__ 10 | 11 | 12 | class TestClass: 13 | def test_method(self, something): 14 | assert something == "test_method" 15 | 16 | 17 | def test_func(something): 18 | assert something == "test_func" 19 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def xyzsomething(request): 9 | return 42 10 | 11 | 12 | def test_func(some): 13 | pass 14 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/test_fixture_named_request.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def request(): 9 | pass 10 | 11 | 12 | def test(): 13 | pass 14 | -------------------------------------------------------------------------------- /testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture 8 | def dynamic(): 9 | pass 10 | 11 | 12 | @pytest.fixture 13 | def a(request): 14 | request.getfixturevalue("dynamic") 15 | 16 | 17 | @pytest.fixture 18 | def b(a): 19 | pass 20 | 21 | 22 | def test(b, request): 23 | assert request.fixturenames == ["b", "request", "a", "dynamic"] 24 | -------------------------------------------------------------------------------- /testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/issue88_initial_file_multinodes/conftest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | class MyFile(pytest.File): 8 | def collect(self): 9 | return [MyItem.from_parent(name="hello", parent=self)] 10 | 11 | 12 | def pytest_collect_file(file_path, parent): 13 | return MyFile.from_parent(path=file_path, parent=parent) 14 | 15 | 16 | class MyItem(pytest.Item): 17 | def runtest(self): 18 | raise NotImplementedError() 19 | -------------------------------------------------------------------------------- /testing/example_scripts/issue88_initial_file_multinodes/test_hello.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_hello(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/marks/marks_considered_keywords/__init__.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi -------------------------------------------------------------------------------- /testing/example_scripts/marks/marks_considered_keywords/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pytest-dev/pytest/80dfa2db8e6157bf706c2f2656ba0fd7bc13195a/testing/example_scripts/marks/marks_considered_keywords/conftest.py -------------------------------------------------------------------------------- /testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.mark.foo 8 | def test_mark(): 9 | pass 10 | -------------------------------------------------------------------------------- /testing/example_scripts/perf_examples/collect_stats/.gitignore: -------------------------------------------------------------------------------- 1 | foo_* 2 | -------------------------------------------------------------------------------- /testing/example_scripts/perf_examples/collect_stats/generate_folders.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import argparse 5 | import pathlib 6 | 7 | 8 | HERE = pathlib.Path(__file__).parent 9 | TEST_CONTENT = (HERE / "template_test.py").read_bytes() 10 | 11 | parser = argparse.ArgumentParser() 12 | parser.add_argument("numbers", nargs="*", type=int) 13 | 14 | 15 | def generate_folders(root, elements, *more_numbers): 16 | fill_len = len(str(elements)) 17 | if more_numbers: 18 | for i in range(elements): 19 | new_folder = root.joinpath(f"foo_{i:0>{fill_len}}") 20 | new_folder.mkdir() 21 | new_folder.joinpath("__init__.py").write_bytes(TEST_CONTENT) 22 | generate_folders(new_folder, *more_numbers) 23 | else: 24 | for i in range(elements): 25 | new_test = root.joinpath(f"test_{i:0<{fill_len}}.py") 26 | new_test.write_bytes(TEST_CONTENT) 27 | 28 | 29 | if __name__ == "__main__": 30 | args = parser.parse_args() 31 | generate_folders(HERE, *(args.numbers or (10, 100))) 32 | -------------------------------------------------------------------------------- /testing/example_scripts/perf_examples/collect_stats/template_test.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_x(): 6 | pass 7 | -------------------------------------------------------------------------------- /testing/example_scripts/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | # dummy pytest.ini to ease direct running of example scripts 3 | -------------------------------------------------------------------------------- /testing/example_scripts/tmpdir/tmp_path_fixture.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | @pytest.mark.parametrize("a", [r"qwe/\abc"]) 8 | def test_fixture(tmp_path, a): 9 | assert tmp_path.is_dir() 10 | assert list(tmp_path.iterdir()) == [] 11 | -------------------------------------------------------------------------------- /testing/example_scripts/unittest/test_parametrized_fixture_error_message.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import unittest 5 | 6 | import pytest 7 | 8 | 9 | @pytest.fixture(params=[1, 2]) 10 | def two(request): 11 | return request.param 12 | 13 | 14 | @pytest.mark.usefixtures("two") 15 | class TestSomethingElse(unittest.TestCase): 16 | def test_two(self): 17 | pass 18 | -------------------------------------------------------------------------------- /testing/example_scripts/unittest/test_setup_skip.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | """Skipping an entire subclass with unittest.skip() should *not* call setUp from a base class.""" 3 | 4 | from __future__ import annotations 5 | 6 | import unittest 7 | 8 | 9 | class Base(unittest.TestCase): 10 | def setUp(self): 11 | assert 0 12 | 13 | 14 | @unittest.skip("skip all tests") 15 | class Test(Base): 16 | def test_foo(self): 17 | assert 0 18 | -------------------------------------------------------------------------------- /testing/example_scripts/unittest/test_setup_skip_class.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | """Skipping an entire subclass with unittest.skip() should *not* call setUpClass from a base class.""" 3 | 4 | from __future__ import annotations 5 | 6 | import unittest 7 | 8 | 9 | class Base(unittest.TestCase): 10 | @classmethod 11 | def setUpClass(cls): 12 | assert 0 13 | 14 | 15 | @unittest.skip("skip all tests") 16 | class Test(Base): 17 | def test_foo(self): 18 | assert 0 19 | -------------------------------------------------------------------------------- /testing/example_scripts/unittest/test_setup_skip_module.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | """setUpModule is always called, even if all tests in the module are skipped""" 3 | 4 | from __future__ import annotations 5 | 6 | import unittest 7 | 8 | 9 | def setUpModule(): 10 | assert 0 11 | 12 | 13 | @unittest.skip("skip all tests") 14 | class Base(unittest.TestCase): 15 | def test(self): 16 | assert 0 17 | -------------------------------------------------------------------------------- /testing/example_scripts/unittest/test_unittest_asyncio.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | from unittest import IsolatedAsyncioTestCase 5 | 6 | 7 | teardowns: list[None] = [] 8 | 9 | 10 | class AsyncArguments(IsolatedAsyncioTestCase): 11 | async def asyncTearDown(self): 12 | teardowns.append(None) 13 | 14 | async def test_something_async(self): 15 | async def addition(x, y): 16 | return x + y 17 | 18 | self.assertEqual(await addition(2, 2), 4) 19 | 20 | async def test_something_async_fails(self): 21 | async def addition(x, y): 22 | return x + y 23 | 24 | self.assertEqual(await addition(2, 2), 3) 25 | 26 | def test_teardowns(self): 27 | assert len(teardowns) == 2 28 | -------------------------------------------------------------------------------- /testing/example_scripts/unittest/test_unittest_asynctest.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | """Issue #7110""" 3 | 4 | from __future__ import annotations 5 | 6 | import asyncio 7 | 8 | import asynctest 9 | 10 | 11 | teardowns: list[None] = [] 12 | 13 | 14 | class Test(asynctest.TestCase): 15 | async def tearDown(self): 16 | teardowns.append(None) 17 | 18 | async def test_error(self): 19 | await asyncio.sleep(0) 20 | self.fail("failing on purpose") 21 | 22 | async def test_ok(self): 23 | await asyncio.sleep(0) 24 | 25 | def test_teardowns(self): 26 | assert len(teardowns) == 2 27 | -------------------------------------------------------------------------------- /testing/example_scripts/unittest/test_unittest_plain_async.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import unittest 5 | 6 | 7 | class Test(unittest.TestCase): 8 | async def test_foo(self): 9 | assert False 10 | -------------------------------------------------------------------------------- /testing/example_scripts/warnings/test_group_warnings_by_message.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import warnings 5 | 6 | import pytest 7 | 8 | 9 | def func(msg): 10 | warnings.warn(UserWarning(msg)) 11 | 12 | 13 | @pytest.mark.parametrize("i", range(5)) 14 | def test_foo(i): 15 | func("foo") 16 | 17 | 18 | def test_foo_1(): 19 | func("foo") 20 | 21 | 22 | @pytest.mark.parametrize("i", range(5)) 23 | def test_bar(i): 24 | func("bar") 25 | -------------------------------------------------------------------------------- /testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import warnings 5 | 6 | import pytest 7 | 8 | 9 | def func(msg): 10 | warnings.warn(UserWarning(msg)) 11 | 12 | 13 | @pytest.mark.parametrize("i", range(20)) 14 | def test_foo(i): 15 | func("foo") 16 | 17 | 18 | def test_foo_1(): 19 | func("foo") 20 | 21 | 22 | @pytest.mark.parametrize("i", range(20)) 23 | def test_bar(i): 24 | func("bar") 25 | -------------------------------------------------------------------------------- /testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | from test_1 import func 5 | 6 | 7 | def test_2(): 8 | func("foo") 9 | -------------------------------------------------------------------------------- /testing/examples/test_issue519.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from _pytest.pytester import Pytester 4 | 5 | 6 | def test_519(pytester: Pytester) -> None: 7 | pytester.copy_example("issue_519.py") 8 | res = pytester.runpytest("issue_519.py") 9 | res.assert_outcomes(passed=8) 10 | -------------------------------------------------------------------------------- /testing/freeze/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | dist/ 3 | *.spec 4 | -------------------------------------------------------------------------------- /testing/freeze/create_executable.py: -------------------------------------------------------------------------------- 1 | """Generate an executable with pytest runner embedded using PyInstaller.""" 2 | 3 | from __future__ import annotations 4 | 5 | 6 | if __name__ == "__main__": 7 | import subprocess 8 | 9 | import pytest 10 | 11 | hidden = [] 12 | for x in pytest.freeze_includes(): 13 | hidden.extend(["--hidden-import", x]) 14 | hidden.extend(["--hidden-import", "distutils"]) 15 | args = ["pyinstaller", "--noconfirm", *hidden, "runtests_script.py"] 16 | subprocess.check_call(" ".join(args), shell=True) 17 | -------------------------------------------------------------------------------- /testing/freeze/runtests_script.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is the script that is actually frozen into an executable: simply executes 3 | pytest main(). 4 | """ 5 | 6 | from __future__ import annotations 7 | 8 | 9 | if __name__ == "__main__": 10 | import sys 11 | 12 | import pytest 13 | 14 | sys.exit(pytest.main()) 15 | -------------------------------------------------------------------------------- /testing/freeze/tests/test_doctest.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | Testing doctest:: 4 | 5 | >>> 1 + 1 6 | 2 7 | -------------------------------------------------------------------------------- /testing/freeze/tests/test_trivial.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_upper(): 6 | assert "foo".upper() == "FOO" 7 | 8 | 9 | def test_lower(): 10 | assert "FOO".lower() == "foo" 11 | -------------------------------------------------------------------------------- /testing/freeze/tox_run.py: -------------------------------------------------------------------------------- 1 | """ 2 | Called by tox.ini: uses the generated executable to run the tests in ./tests/ 3 | directory. 4 | """ 5 | 6 | from __future__ import annotations 7 | 8 | 9 | if __name__ == "__main__": 10 | import os 11 | import sys 12 | 13 | executable = os.path.join(os.getcwd(), "dist", "runtests_script", "runtests_script") 14 | if sys.platform.startswith("win"): 15 | executable += ".exe" 16 | sys.exit(os.system(f"{executable} tests")) 17 | -------------------------------------------------------------------------------- /testing/io/test_wcwidth.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from _pytest._io.wcwidth import wcswidth 4 | from _pytest._io.wcwidth import wcwidth 5 | import pytest 6 | 7 | 8 | @pytest.mark.parametrize( 9 | ("c", "expected"), 10 | [ 11 | ("\0", 0), 12 | ("\n", -1), 13 | ("a", 1), 14 | ("1", 1), 15 | ("א", 1), 16 | ("\u200b", 0), 17 | ("\u1abe", 0), 18 | ("\u0591", 0), 19 | ("🉐", 2), 20 | ("$", 2), # noqa: RUF001 21 | ], 22 | ) 23 | def test_wcwidth(c: str, expected: int) -> None: 24 | assert wcwidth(c) == expected 25 | 26 | 27 | @pytest.mark.parametrize( 28 | ("s", "expected"), 29 | [ 30 | ("", 0), 31 | ("hello, world!", 13), 32 | ("hello, world!\n", -1), 33 | ("0123456789", 10), 34 | ("שלום, עולם!", 11), 35 | ("שְבֻעָיים", 6), 36 | ("🉐🉐🉐", 6), 37 | ], 38 | ) 39 | def test_wcswidth(s: str, expected: int) -> None: 40 | assert wcswidth(s) == expected 41 | -------------------------------------------------------------------------------- /testing/plugins_integration/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | assets/ 3 | -------------------------------------------------------------------------------- /testing/plugins_integration/README.rst: -------------------------------------------------------------------------------- 1 | This folder contains tests and support files for smoke testing popular plugins against the current pytest version. 2 | 3 | The objective is to gauge if any intentional or unintentional changes in pytest break plugins. 4 | 5 | As a rule of thumb, we should add plugins here: 6 | 7 | 1. That are used at large. This might be subjective in some cases, but if answer is yes to 8 | the question: *if a new release of pytest causes pytest-X to break, will this break a ton of test suites out there?*. 9 | 2. That don't have large external dependencies: such as external services. 10 | 11 | Besides adding the plugin as dependency, we should also add a quick test which uses some 12 | minimal part of the plugin, a smoke test. Also consider reusing one of the existing tests if that's 13 | possible. 14 | -------------------------------------------------------------------------------- /testing/plugins_integration/bdd_wallet.feature: -------------------------------------------------------------------------------- 1 | Feature: Buy things with apple 2 | 3 | Scenario: Buy fruits 4 | Given A wallet with 50 5 | 6 | When I buy some apples for 1 7 | And I buy some bananas for 2 8 | 9 | Then I have 47 left 10 | -------------------------------------------------------------------------------- /testing/plugins_integration/bdd_wallet.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | from pytest_bdd import given 5 | from pytest_bdd import scenario 6 | from pytest_bdd import then 7 | from pytest_bdd import when 8 | 9 | import pytest 10 | 11 | 12 | @scenario("bdd_wallet.feature", "Buy fruits") 13 | def test_publish(): 14 | pass 15 | 16 | 17 | @pytest.fixture 18 | def wallet(): 19 | class Wallet: 20 | amount = 0 21 | 22 | return Wallet() 23 | 24 | 25 | @given("A wallet with 50") 26 | def fill_wallet(wallet): 27 | wallet.amount = 50 28 | 29 | 30 | @when("I buy some apples for 1") 31 | def buy_apples(wallet): 32 | wallet.amount -= 1 33 | 34 | 35 | @when("I buy some bananas for 2") 36 | def buy_bananas(wallet): 37 | wallet.amount -= 2 38 | 39 | 40 | @then("I have 47 left") 41 | def check(wallet): 42 | assert wallet.amount == 47 43 | -------------------------------------------------------------------------------- /testing/plugins_integration/django_settings.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | 4 | SECRET_KEY = "mysecret" 5 | -------------------------------------------------------------------------------- /testing/plugins_integration/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = --strict-markers 3 | asyncio_mode = strict 4 | filterwarnings = 5 | error::pytest.PytestWarning 6 | ignore:usefixtures.* without arguments has no effect:pytest.PytestWarning 7 | ignore:.*.fspath is deprecated and will be replaced by .*.path.*:pytest.PytestDeprecationWarning 8 | -------------------------------------------------------------------------------- /testing/plugins_integration/pytest_anyio_integration.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import anyio 5 | 6 | import pytest 7 | 8 | 9 | @pytest.mark.anyio 10 | async def test_sleep(): 11 | await anyio.sleep(0) 12 | -------------------------------------------------------------------------------- /testing/plugins_integration/pytest_asyncio_integration.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import asyncio 5 | 6 | import pytest 7 | 8 | 9 | @pytest.mark.asyncio 10 | async def test_sleep(): 11 | await asyncio.sleep(0) 12 | -------------------------------------------------------------------------------- /testing/plugins_integration/pytest_mock_integration.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | 5 | def test_mocker(mocker): 6 | mocker.MagicMock() 7 | -------------------------------------------------------------------------------- /testing/plugins_integration/pytest_rerunfailures_integration.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import unittest 4 | 5 | 6 | class MyTestCase(unittest.TestCase): 7 | first_time = True 8 | 9 | def test_fail_the_first_time(self) -> None: 10 | """Regression test for issue #12424.""" 11 | if self.first_time: 12 | type(self).first_time = False 13 | self.fail() 14 | -------------------------------------------------------------------------------- /testing/plugins_integration/pytest_trio_integration.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import trio 5 | 6 | import pytest 7 | 8 | 9 | @pytest.mark.trio 10 | async def test_sleep(): 11 | await trio.sleep(0) 12 | -------------------------------------------------------------------------------- /testing/plugins_integration/pytest_twisted_integration.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest_twisted 5 | from twisted.internet.task import deferLater 6 | 7 | 8 | def sleep(): 9 | import twisted.internet.reactor 10 | 11 | return deferLater(clock=twisted.internet.reactor, delay=0) 12 | 13 | 14 | @pytest_twisted.inlineCallbacks 15 | def test_inlineCallbacks(): 16 | yield sleep() 17 | 18 | 19 | @pytest_twisted.ensureDeferred 20 | async def test_inlineCallbacks_async(): 21 | await sleep() 22 | -------------------------------------------------------------------------------- /testing/plugins_integration/requirements.txt: -------------------------------------------------------------------------------- 1 | anyio[trio]==4.9.0 2 | django==5.2.1 3 | pytest-asyncio==0.26.0 4 | pytest-bdd==8.1.0 5 | pytest-cov==6.1.1 6 | pytest-django==4.11.1 7 | pytest-flakes==4.0.5 8 | pytest-html==4.1.1 9 | pytest-mock==3.14.1 10 | pytest-rerunfailures==15.1 11 | pytest-sugar==1.0.0 12 | pytest-trio==0.8.0 13 | pytest-twisted==1.14.3 14 | twisted==24.11.0 15 | pytest-xvfb==3.1.1 16 | -------------------------------------------------------------------------------- /testing/plugins_integration/simple_integration.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import pytest 5 | 6 | 7 | def test_foo(): 8 | assert True 9 | 10 | 11 | @pytest.mark.parametrize("i", range(3)) 12 | def test_bar(i): 13 | assert True 14 | -------------------------------------------------------------------------------- /testing/test_entry_points.py: -------------------------------------------------------------------------------- 1 | # mypy: allow-untyped-defs 2 | from __future__ import annotations 3 | 4 | import importlib.metadata 5 | 6 | 7 | def test_pytest_entry_points_are_identical(): 8 | dist = importlib.metadata.distribution("pytest") 9 | entry_map = {ep.name: ep for ep in dist.entry_points} 10 | assert entry_map["pytest"].value == entry_map["py.test"].value 11 | -------------------------------------------------------------------------------- /testing/test_meta.py: -------------------------------------------------------------------------------- 1 | """Test importing of all internal packages and modules. 2 | 3 | This ensures all internal packages can be imported without needing the pytest 4 | namespace being set, which is critical for the initialization of xdist. 5 | """ 6 | 7 | from __future__ import annotations 8 | 9 | import pkgutil 10 | import subprocess 11 | import sys 12 | 13 | import _pytest 14 | import pytest 15 | 16 | 17 | def _modules() -> list[str]: 18 | pytest_pkg: str = _pytest.__path__ # type: ignore 19 | return sorted( 20 | n 21 | for _, n, _ in pkgutil.walk_packages(pytest_pkg, prefix=_pytest.__name__ + ".") 22 | ) 23 | 24 | 25 | @pytest.mark.slow 26 | @pytest.mark.parametrize("module", _modules()) 27 | def test_no_warnings(module: str) -> None: 28 | # fmt: off 29 | subprocess.check_call(( 30 | sys.executable, 31 | "-W", "error", 32 | "-c", f"__import__({module!r})", 33 | )) 34 | # fmt: on 35 | --------------------------------------------------------------------------------