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.