Sobes.tech
Junior — Middle

Pode explicar o que significa o conceito de Scope no contexto do PyTest e como ele afeta a execução dos testes?

sobes.tech IA

Resposta da IA

No PyTest, o parâmetro scope define o âmbito de vida (ciclo de vida) da fixture, ou seja, por quanto tempo ela será criada e utilizada nos testes.

Os valores principais de scope são:

  • function (padrão): a fixture é recriada para cada teste.
  • class: a fixture é criada uma vez por cada classe de testes.
  • module: a fixture é criada uma vez por módulo (arquivo de testes).
  • package: a fixture é criada uma vez por pacote.
  • session: a fixture é criada uma vez por toda a sessão de testes.

Por exemplo, se a fixture tiver scope="module", ela é inicializada uma vez antes de executar todos os testes no módulo e destruída após sua execução. Isso ajuda a economizar tempo e recursos, especialmente se a fixture criar, por exemplo, uma conexão a um banco de dados ou servidor.

Exemplo de fixture com scope:

import pytest

@pytest.fixture(scope="module")
def db_connection():
    conn = create_connection()
    yield conn
    conn.close()

Assim, o scope influencia o desempenho e o isolamento dos testes, permitindo controlar com que frequência os recursos são criados e destruídos.