diff --git a/doc/pt-br/_templates/sidebarintro.html b/doc/pt-br/_templates/sidebarintro.html
new file mode 100644
index 000000000..ae860c172
--- /dev/null
+++ b/doc/pt-br/_templates/sidebarintro.html
@@ -0,0 +1,5 @@
+
About pytest
+
+ pytest is a mature full-featured Python testing tool that helps
+ you write better programs.
+
diff --git a/doc/pt-br/_templates/slim_searchbox.html b/doc/pt-br/_templates/slim_searchbox.html
new file mode 100644
index 000000000..e98ad4ed9
--- /dev/null
+++ b/doc/pt-br/_templates/slim_searchbox.html
@@ -0,0 +1,15 @@
+{#
+ basic/searchbox.html with heading removed.
+#}
+{%- if pagename != "search" and builder != "singlehtml" %}
+
+
+
+
+
+
+{%- endif %}
diff --git a/doc/pt-br/conf.py b/doc/pt-br/conf.py
new file mode 100644
index 000000000..5184ee7b1
--- /dev/null
+++ b/doc/pt-br/conf.py
@@ -0,0 +1,475 @@
+#
+# pytest documentation build configuration file, created by
+# sphinx-quickstart on Fri Oct 8 17:54:28 2010.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The full version, including alpha/beta/rc tags.
+# The short X.Y version.
+import ast
+import os
+import shutil
+import sys
+from textwrap import dedent
+from typing import List
+from typing import TYPE_CHECKING
+
+from _pytest import __version__ as version
+
+if TYPE_CHECKING:
+ import sphinx.application
+
+
+release = ".".join(version.split(".")[:2])
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+# sys.path.insert(0, os.path.abspath('.'))
+
+autodoc_member_order = "bysource"
+autodoc_typehints = "description"
+autodoc_typehints_description_target = "documented"
+todo_include_todos = 1
+
+latex_engine = "lualatex"
+
+latex_elements = {
+ "preamble": dedent(
+ r"""
+ \directlua{
+ luaotfload.add_fallback("fallbacks", {
+ "Noto Serif CJK SC:style=Regular;",
+ "Symbola:Style=Regular;"
+ })
+ }
+
+ \setmainfont{FreeSerif}[RawFeature={fallback=fallbacks}]
+ """
+ )
+}
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = [
+ "pallets_sphinx_themes",
+ "pygments_pytest",
+ "sphinx.ext.autodoc",
+ "sphinx.ext.autosummary",
+ "sphinx.ext.extlinks",
+ "sphinx.ext.intersphinx",
+ "sphinx.ext.todo",
+ "sphinx.ext.viewcode",
+ "sphinx_removed_in",
+ "sphinxcontrib_trio",
+]
+
+# Building PDF docs on readthedocs requires inkscape for svg to pdf
+# conversion. The relevant plugin is not useful for normal HTML builds, but
+# it still raises warnings and fails CI if inkscape is not available. So
+# only use the plugin if inkscape is actually available.
+if shutil.which("inkscape"):
+ extensions.append("sphinxcontrib.inkscapeconverter")
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ["_templates"]
+
+# The suffix of source filenames.
+source_suffix = ".rst"
+
+# The encoding of source files.
+# source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = "contents"
+
+# General information about the project.
+project = "pytest"
+copyright = "2015, holger krekel and pytest-dev team"
+
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = [
+ "_build",
+ "naming20.rst",
+ "test/*",
+ "old_*",
+ "*attic*",
+ "*/attic*",
+ "funcargs.rst",
+ "setup.rst",
+ "example/remoteinterp.rst",
+]
+
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+default_role = "literal"
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+add_module_names = False
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = "sphinx"
+
+
+# A list of ignored prefixes for module index sorting.
+# modindex_common_prefix = []
+
+# A list of regular expressions that match URIs that should not be checked when
+# doing a linkcheck.
+linkcheck_ignore = [
+ "https://blogs.msdn.microsoft.com/bharry/2017/06/28/testing-in-a-cloud-delivery-cadence/",
+ "http://pythontesting.net/framework/pytest-introduction/",
+ r"https://github.com/pytest-dev/pytest/issues/\d+",
+ r"https://github.com/pytest-dev/pytest/pull/\d+",
+]
+
+# The number of worker threads to use when checking links (default=5).
+linkcheck_workers = 5
+
+
+_repo = "https://github.com/pytest-dev/pytest"
+extlinks = {
+ "bpo": ("https://bugs.python.org/issue%s", "bpo-%s"),
+ "pypi": ("https://pypi.org/project/%s/", "%s"),
+ "issue": (f"{_repo}/issues/%s", "issue #%s"),
+ "pull": (f"{_repo}/pull/%s", "pull request #%s"),
+ "user": ("https://github.com/%s", "@%s"),
+}
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+sys.path.append(os.path.abspath("_themes"))
+html_theme_path = ["_themes"]
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = "flask"
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+# html_theme_options = {"index_logo": None}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# " v documentation".
+html_title = "pytest documentation"
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+html_short_title = "pytest-%s" % release
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+html_logo = "img/pytest_logo_curves.svg"
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+html_favicon = "img/favicon.png"
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+# html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+# html_sidebars = {'index': 'indexsidebar.html'}
+
+html_sidebars = {
+ "index": [
+ "slim_searchbox.html",
+ "sidebarintro.html",
+ "globaltoc.html",
+ "links.html",
+ "sourcelink.html",
+ ],
+ "**": [
+ "slim_searchbox.html",
+ "globaltoc.html",
+ "relations.html",
+ "links.html",
+ "sourcelink.html",
+ ],
+}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+# html_additional_pages = {'index': 'index.html'}
+
+
+# If false, no module index is generated.
+html_domain_indices = True
+
+# If false, no index is generated.
+html_use_index = False
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+html_show_sourcelink = False
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+# html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+# html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = "pytestdoc"
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+# latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+# latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+ (
+ "contents",
+ "pytest.tex",
+ "pytest Documentation",
+ "holger krekel, trainer and consultant, https://merlinux.eu/",
+ "manual",
+ )
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+latex_logo = "img/pytest1.png"
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# If true, show page references after internal links.
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+# latex_show_urls = False
+
+# Additional stuff for the LaTeX preamble.
+# latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+latex_domain_indices = False
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ ("how-to/usage", "pytest", "pytest usage", ["holger krekel at merlinux eu"], 1)
+]
+
+
+# -- Options for Epub output ---------------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = "pytest"
+epub_author = "holger krekel at merlinux eu"
+epub_publisher = "holger krekel at merlinux eu"
+epub_copyright = "2013, holger krekel et alii"
+
+# The language of the text. It defaults to the language option
+# or en if the language is not set.
+# epub_language = ''
+
+# The scheme of the identifier. Typical schemes are ISBN or URL.
+# epub_scheme = ''
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+# epub_identifier = ''
+
+# A unique identification for the text.
+# epub_uid = ''
+
+# HTML files that should be inserted before the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+# epub_pre_files = []
+
+# HTML files shat should be inserted after the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+# epub_post_files = []
+
+# A list of files that should not be packed into the epub file.
+# epub_exclude_files = []
+
+# The depth of the table of contents in toc.ncx.
+# epub_tocdepth = 3
+
+# Allow duplicate toc entries.
+# epub_tocdup = True
+
+
+# -- Options for texinfo output ------------------------------------------------
+
+texinfo_documents = [
+ (
+ master_doc,
+ "pytest",
+ "pytest Documentation",
+ (
+ "Holger Krekel@*Benjamin Peterson@*Ronny Pfannschmidt@*"
+ "Floris Bruynooghe@*others"
+ ),
+ "pytest",
+ "simple powerful testing with Python",
+ "Programming",
+ 1,
+ )
+]
+
+
+intersphinx_mapping = {
+ "pluggy": ("https://pluggy.readthedocs.io/en/stable", None),
+ "python": ("https://docs.python.org/3", None),
+ "numpy": ("https://numpy.org/doc/stable", None),
+ "pip": ("https://pip.pypa.io/en/stable", None),
+ "tox": ("https://tox.wiki/en/stable", None),
+ "virtualenv": ("https://virtualenv.pypa.io/en/stable", None),
+ "setuptools": ("https://setuptools.pypa.io/en/stable", None),
+ "packaging": ("https://packaging.python.org/en/latest", None),
+}
+
+
+def configure_logging(app: "sphinx.application.Sphinx") -> None:
+ """Configure Sphinx's WarningHandler to handle (expected) missing include."""
+ import sphinx.util.logging
+ import logging
+
+ class WarnLogFilter(logging.Filter):
+ def filter(self, record: logging.LogRecord) -> bool:
+ """Ignore warnings about missing include with "only" directive.
+
+ Ref: https://github.com/sphinx-doc/sphinx/issues/2150."""
+ if (
+ record.msg.startswith('Problems with "include" directive path:')
+ and "_changelog_towncrier_draft.rst" in record.msg
+ ):
+ return False
+ return True
+
+ logger = logging.getLogger(sphinx.util.logging.NAMESPACE)
+ warn_handler = [x for x in logger.handlers if x.level == logging.WARNING]
+ assert len(warn_handler) == 1, warn_handler
+ warn_handler[0].filters.insert(0, WarnLogFilter())
+
+
+def setup(app: "sphinx.application.Sphinx") -> None:
+ app.add_crossref_type(
+ "fixture",
+ "fixture",
+ objname="built-in fixture",
+ indextemplate="pair: %s; fixture",
+ )
+
+ app.add_object_type(
+ "confval",
+ "confval",
+ objname="configuration value",
+ indextemplate="pair: %s; configuration value",
+ )
+
+ app.add_object_type(
+ "globalvar",
+ "globalvar",
+ objname="global variable interpreted by pytest",
+ indextemplate="pair: %s; global variable interpreted by pytest",
+ )
+
+ app.add_crossref_type(
+ directivename="hook",
+ rolename="hook",
+ objname="pytest hook",
+ indextemplate="pair: %s; hook",
+ )
+
+ configure_logging(app)
+
+ # Make Sphinx mark classes with "final" when decorated with @final.
+ # We need this because we import final from pytest._compat, not from
+ # typing (for Python < 3.8 compat), so Sphinx doesn't detect it.
+ # To keep things simple we accept any `@final` decorator.
+ # Ref: https://github.com/pytest-dev/pytest/pull/7780
+ import sphinx.pycode.ast
+ import sphinx.pycode.parser
+
+ original_is_final = sphinx.pycode.parser.VariableCommentPicker.is_final
+
+ def patched_is_final(self, decorators: List[ast.expr]) -> bool:
+ if original_is_final(self, decorators):
+ return True
+ return any(
+ sphinx.pycode.ast.unparse(decorator) == "final" for decorator in decorators
+ )
+
+ sphinx.pycode.parser.VariableCommentPicker.is_final = patched_is_final
+
+ # legacypath.py monkey-patches pytest.Testdir in. Import the file so
+ # that autodoc can discover references to it.
+ import _pytest.legacypath # noqa: F401
diff --git a/doc/pt-br/contents.rst b/doc/pt-br/contents.rst
new file mode 100644
index 000000000..1022efb67
--- /dev/null
+++ b/doc/pt-br/contents.rst
@@ -0,0 +1,17 @@
+.. _toc:
+
+Documentação completa do Pytest
+===============================
+
+`Baixe a versão mais recente em PDF `_
+
+.. `Baixe a versão mais recente em EPUB `_
+
+
+Comece aqui
+-----------
+
+.. toctree::
+ :maxdepth: 2
+
+ getting-started
diff --git a/doc/pt-br/getting-started.rst b/doc/pt-br/getting-started.rst
new file mode 100644
index 000000000..835b55d55
--- /dev/null
+++ b/doc/pt-br/getting-started.rst
@@ -0,0 +1,276 @@
+.. _get-started:
+
+Comece aqui
+===================================
+
+.. _`getstarted`:
+.. _`installation`:
+
+Instale o ``pytest``
+----------------------------------------
+
+``pytest`` requer: Python 3.7+ or PyPy3.
+
+1. Rode o seguinte comando no seu terminal de comandos:
+
+.. code-block:: bash
+
+ pip install -U pytest
+
+2. Confirme que você instalou a versão correta:
+
+.. code-block:: bash
+
+ $ pytest --version
+ pytest 7.1.3
+
+.. _`simpletest`:
+
+Crie seu primeiro teste
+----------------------------------------------------------
+
+Crie um novo arquivo chamado ``test_sample.py``, contendo uma função e um teste:
+
+.. code-block:: python
+
+ # conteudo de test_sample.py
+ def func(x):
+ return x + 1
+
+
+ def test_answer():
+ assert func(3) == 5
+
+O teste
+
+.. code-block:: pytest
+
+ $ pytest
+ =========================== test session starts ============================
+ platform linux -- Python 3.x.y, pytest-7.x.y, pluggy-1.x.y
+ rootdir: /home/sweet/project
+ collected 1 item
+
+ test_sample.py F [100%]
+
+ ================================= FAILURES =================================
+ _______________________________ test_answer ________________________________
+
+ def test_answer():
+ > assert func(3) == 5
+ E assert 4 == 5
+ E + where 4 = func(3)
+
+ test_sample.py:6: AssertionError
+ ========================= short test summary info ==========================
+ FAILED test_sample.py::test_answer - assert 4 == 5
+ ============================ 1 failed in 0.12s =============================
+
+O ``[100%]`` se refere ao progresso geral de rodar todos os casos de teste. Depois que ele termina, o pytest mostra um
+relatório de falhas pois ``func(3)`` não retorna ``5``.
+
+.. note::
+
+ Você pode usar sentenças ``assert`` para verificar resultados esperados. A :ref:`Introspecçao avançada de asserções ` do pytest
+ irá inteligentemente reportar valores intermediários da expressão *assert* para que você possa evitar
+ usar os vários nomes de :ref:`métodos legados do JUnit `.
+
+Rode multiplos testes
+----------------------------------------------------------
+
+O ``pytest`` vai rodar todos os arquivos que seguirem o padrão test_*.py ou \*_test.py no diretório atual e em seus
+subdiretórios. De maneira mais geral, ele segue as regras padrões de descoberta de testes.
+
+..
+ :ref:`regras padrões de descoberta de testes `
+
+
+Verifique se uma exceção especifica é levantada
+--------------------------------------------------------------
+
+Use a expressão auxiliar raises para verificar que algum pedaço de código levanta uma exceção:
+
+..
+ :ref:`raises `
+
+.. code-block:: python
+
+ # conteude de test_sysexit.py
+ import pytest
+
+
+ def f():
+ raise SystemExit(1)
+
+
+ def test_mytest():
+ with pytest.raises(SystemExit):
+ f()
+
+Execute a função de teste com o modo de relatório "quieto" (*quiet*):
+
+.. code-block:: pytest
+
+ $ pytest -q test_sysexit.py
+ . [100%]
+ 1 passed in 0.12s
+
+.. note::
+
+ A flag ``-q/--quiet`` é usada para manter a saida desse exemplo e dos próximos pequena.
+
+Agrupe multiplos testes em uma classe
+--------------------------------------------------------------
+
+.. regendoc:wipe
+
+Depois de desenvolver multiplos testes, você pode querer agrupá-los em uma classe.
+pytest torna fácil o processo de criar uma classe contendo mais de um teste:
+
+.. code-block:: python
+
+ # conteudo of test_class.py
+ class TestClass:
+ def test_one(self):
+ x = "this"
+ assert "h" in x
+
+ def test_two(self):
+ x = "hello"
+ assert hasattr(x, "check")
+
+``pytest`` descobre todos os testes seguindo as Convenções para descoberta de testes Python,
+então eé encontra ambas as funlções com o prefixo ``test_``. Não há a necessidade de usar subclasses, mas se certifique
+de usar o prefixo ``Test`` nas suas classes, caso contrário a classe vai ser ignorada. Podemos simplesmente rodar o
+módulo usando nome do arquivo:
+
+..
+ :ref:`Convenções para descoberta de testes Python `
+
+.. code-block:: pytest
+
+ $ pytest -q test_class.py
+ .F [100%]
+ ================================= FAILURES =================================
+ ____________________________ TestClass.test_two ____________________________
+
+ self =
+
+ def test_two(self):
+ x = "hello"
+ > assert hasattr(x, "check")
+ E AssertionError: assert False
+ E + where False = hasattr('hello', 'check')
+
+ test_class.py:8: AssertionError
+ ========================= short test summary info ==========================
+ FAILED test_class.py::TestClass::test_two - AssertionError: assert False
+ 1 failed, 1 passed in 0.12s
+
+O primeiro teste passou e o segundo falhou. Você pode facilmente ver os valores intermediários na asserção para ajudar
+você a entender a razão da falha.
+
+Agrupar testes em classes traz benefícios pelas seguintes razões:
+
+ * Organização dos testes
+ * Compartilhar fixtures apenas para testes de uma classe em particular
+ * Aplicar marcadores a nível de classe e tê-los implicitamente aplicados para todos os testes
+
+Uma coisa a manter em mente quando você está agrupando testes dentro de classes é que cada teste tem uma instância
+única da classe. Ter cada teste compartilhar uma mesma instância da classe prejudicaria o isolamento do teste e também
+encorajaria más práticas de teste.
+Isso está detalhado abaixo:
+
+.. regendoc:wipe
+
+.. code-block:: python
+
+ # conteudo de test_class_demo.py
+ class TestClassDemoInstance:
+ value = 0
+
+ def test_one(self):
+ self.value = 1
+ assert self.value == 1
+
+ def test_two(self):
+ assert self.value == 1
+
+
+.. code-block:: pytest
+
+ $ pytest -k TestClassDemoInstance -q
+ .F [100%]
+ ================================= FAILURES =================================
+ ______________________ TestClassDemoInstance.test_two ______________________
+
+ self =
+
+ def test_two(self):
+ > assert self.value == 1
+ E assert 0 == 1
+ E + where 0 = .value
+
+ test_class_demo.py:9: AssertionError
+ ========================= short test summary info ==========================
+ FAILED test_class_demo.py::TestClassDemoInstance::test_two - assert 0 == 1
+ 1 failed, 1 passed in 0.12s
+
+Note que os atributes adicionados a nivel de classe são *atributos de classe*, então eles são compartilhados entre os
+testes.
+
+Use um diretório temporário para testes funcionáis
+--------------------------------------------------------------
+
+O ``pytest`` provê Fixtures e argumentos de função padrões para requisitar recursos arbitrários,
+como um diretório temporário único:
+
+..
+ :std:doc:`Fixtures e argumentos de função padrões `
+
+.. code-block:: python
+
+ # conteudo de test_tmp_path.py
+ def test_needsfiles(tmp_path):
+ print(tmp_path)
+ assert 0
+
+Liste o nome ``tmp_path`` na assinatura da função de teste e o ``pytest`` irá procurar e chamar uma fábrica de fixtures
+para criar o recurso antes de executar a chamada da função de teste. Antes do teste rodar, ``pytest`` cria um
+diretório temporário que é único para cada invocação/execução daquele teste.
+
+.. code-block:: pytest
+
+ $ pytest -q test_tmp_path.py
+ F [100%]
+ ================================= FAILURES =================================
+ _____________________________ test_needsfiles ______________________________
+
+ tmp_path = PosixPath('PYTEST_TMPDIR/test_needsfiles0')
+
+ def test_needsfiles(tmp_path):
+ print(tmp_path)
+ > assert 0
+ E assert 0
+
+ test_tmp_path.py:3: AssertionError
+ --------------------------- Captured stdout call ---------------------------
+ PYTEST_TMPDIR/test_needsfiles0
+ ========================= short test summary info ==========================
+ FAILED test_tmp_path.py::test_needsfiles - assert 0
+ 1 failed in 0.12s
+
+Mais informações sobre como manipular diretórios temporários está disponível em
+Arquivos e diretórios temporários .
+
+Conheça que tipos de fixtures do pytest estão disponíveis por padrão com o comando:
+
+..
+ :ref:`Arquivos e diretórios temporários `
+ :ref:`fixtures do pytest `
+
+.. code-block:: bash
+
+ pytest --fixtures # shows builtin and custom fixtures
+
+Note que esse comando omite fixtures que começam com ``_`` a não ser que a opção ``-v`` seja adicionada ao comando.
diff --git a/doc/pt-br/img/cramer2.png b/doc/pt-br/img/cramer2.png
new file mode 100644
index 000000000..6bf0e92e2
Binary files /dev/null and b/doc/pt-br/img/cramer2.png differ
diff --git a/doc/pt-br/img/favicon.png b/doc/pt-br/img/favicon.png
new file mode 100644
index 000000000..5c8824d67
Binary files /dev/null and b/doc/pt-br/img/favicon.png differ
diff --git a/doc/pt-br/img/freiburg2.jpg b/doc/pt-br/img/freiburg2.jpg
new file mode 100644
index 000000000..3383d3023
Binary files /dev/null and b/doc/pt-br/img/freiburg2.jpg differ
diff --git a/doc/pt-br/img/gaynor3.png b/doc/pt-br/img/gaynor3.png
new file mode 100644
index 000000000..a577c168b
Binary files /dev/null and b/doc/pt-br/img/gaynor3.png differ
diff --git a/doc/pt-br/img/keleshev.png b/doc/pt-br/img/keleshev.png
new file mode 100644
index 000000000..0d5e571e2
Binary files /dev/null and b/doc/pt-br/img/keleshev.png differ
diff --git a/doc/pt-br/img/pullrequest.png b/doc/pt-br/img/pullrequest.png
new file mode 100644
index 000000000..4af293b21
Binary files /dev/null and b/doc/pt-br/img/pullrequest.png differ
diff --git a/doc/pt-br/img/pylib.png b/doc/pt-br/img/pylib.png
new file mode 100644
index 000000000..2e10d4388
Binary files /dev/null and b/doc/pt-br/img/pylib.png differ
diff --git a/doc/pt-br/img/pytest1.png b/doc/pt-br/img/pytest1.png
new file mode 100644
index 000000000..498e70485
Binary files /dev/null and b/doc/pt-br/img/pytest1.png differ
diff --git a/doc/pt-br/img/pytest_logo_curves.svg b/doc/pt-br/img/pytest_logo_curves.svg
new file mode 100644
index 000000000..e05ceb112
--- /dev/null
+++ b/doc/pt-br/img/pytest_logo_curves.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/doc/pt-br/img/theuni.png b/doc/pt-br/img/theuni.png
new file mode 100644
index 000000000..abeb737e7
Binary files /dev/null and b/doc/pt-br/img/theuni.png differ
diff --git a/doc/pt-br/index.rst b/doc/pt-br/index.rst
new file mode 100644
index 000000000..e6ea16ebc
--- /dev/null
+++ b/doc/pt-br/index.rst
@@ -0,0 +1,128 @@
+:orphan:
+
+.. _features:
+
+pytest: ajuda você a escrever programas melhores
+================================================
+
+.. module:: pytest
+
+O *framework* ``pytest`` torna fácil a tarefa de escrever pequenos, legíveis testes, e consegue escalar para suportar
+testes funcionais complexos para aplicações e bibliotecas.
+
+
+``pytest`` requer: Python 3.7+ ou PyPy3.
+
+**Nome do pacote PyPI**: :pypi:`pytest`
+
+
+Um exemplo rápido
+-----------------
+
+.. code-block:: python
+
+ # conteudo de test_sample.py
+ def inc(x):
+ return x + 1
+
+
+ def test_answer():
+ assert inc(3) == 5
+
+
+Para executá-lo:
+
+.. code-block:: pytest
+
+ $ pytest
+ =========================== test session starts ============================
+ platform linux -- Python 3.x.y, pytest-7.x.y, pluggy-1.x.y
+ rootdir: /home/sweet/project
+ collected 1 item
+
+ test_sample.py F [100%]
+
+ ================================= FAILURES =================================
+ _______________________________ test_answer ________________________________
+
+ def test_answer():
+ > assert inc(3) == 5
+ E assert 4 == 5
+ E + where 4 = inc(3)
+
+ test_sample.py:6: AssertionError
+ ========================= short test summary info ==========================
+ FAILED test_sample.py::test_answer - assert 4 == 5
+ ============================ 1 failed in 0.12s =============================
+
+Graças a introspecção detalhada de asserções do ``pytest``, somente puras sentenças de ``assert`` são usadas.
+Veja :ref:`Começe aqui ` para uma indrotução básica de como usar o pytest.
+
+
+Funcionalidades
+---------------
+
+- Informação detalhada sobre sentenças de asserção (não precisa decorar nomes do ``self.assert*``
+
+- Descoberta automática de módulos de testes e funções
+
+- Fixtures modulares para gerenciar recursos de testes pequenos ou parametrizados.
+
+- Capaz de rodar suites de testes escritas usando unittest (incluindo *trial*) e
+ nose sem nenhuma mudança extra.
+
+- Python 3.7+ ou PyPy 3
+
+- Arquitetura rica para plugins, com mais de 800+ plugins externos e uma comunidade ativa
+
+
+Documentação
+------------
+
+* :ref:`Comece aqui ` - instale o pytest e conheça o básico em apenas vinte minutos
+* Guias how-to - guias com passo a passo, cobrundo um grande conjunto de casos de uso e necessidades
+* Guias de referência - inclui a referência completa para a API do pytest,
+ uma lista de plugins e mais
+* Explicações - background, discução de tópicos chaves, resposta a perguntas de alto-nível
+
+
+Bugs/Pedidos
+------------
+
+Por favor use o `gerenciador de bugs do Github `_ para submeter bugs ou
+pedidos de novas funcionalidades.
+
+
+Suporte o pytest
+----------------
+
+`Open Collective`_ é uma plataforma de financiamento online para comunidades abertas e transparentes.
+Ela provê ferramentas para arrecadar dinheiro e compartilhar gastos com trasnparencia total.
+
+Ela é a plataforma recomendada para indivíduos e companhias que queira fazer doações mensais ou imediatas diretamente
+para o projeto.
+
+Veja mais detalhes no `pytest collective`_.
+
+.. _Open Collective: https://opencollective.com
+.. _pytest collective: https://opencollective.com/pytest
+
+
+pytest para empresas
+--------------------
+
+Disponível como parte da assinatuda Tidelift.
+
+Os mantedores do pytest e milhares de outros pacotes estão trabalhando com a Tidelift para entregar suporte de nível
+comercioal e manutenção para as dependencias de código aberto que você usa para construir suas aplicações.
+Economize tempo, reduça risco, e melhore a saúde do código, enquanto paga exatamente os mantedores das dependencias que
+você usa.
+
+`Saiba mais. `_
+
+Segurança
+~~~~~~~~~
+
+pytest, até agora, nunca foi associada a uma vulnerabilidade de segurança, mas de qualquer maneira, para reportar
+uma vulnerabilidade de segurança, por favor use o `Contato de segurança da Tidelift `_.
+A Tidelift irá coordenar o conserto da vulnerabilidade e sua divulgação.
diff --git a/tox.ini b/tox.ini
index f04242c5c..46bacd2f9 100644
--- a/tox.ini
+++ b/tox.ini
@@ -79,7 +79,9 @@ commands =
# the '-t changelog_towncrier_draft' tags makes sphinx include the draft
# changelog in the docs; this does not happen on ReadTheDocs because it uses
# the standard sphinx command so the 'changelog_towncrier_draft' is never set there
- sphinx-build -W --keep-going -b html doc/en doc/en/_build/html -t changelog_towncrier_draft {posargs:}
+ # sphinx-build -W --keep-going -b html doc/en doc/en/_build/html -t changelog_towncrier_draft {posargs:}
+ sphinx-build -W --keep-going -b html doc/pt-br doc/pt-br/_build/html -t changelog_towncrier_draft {posargs:}
+
[testenv:docs-checklinks]
basepython = python3