pytest vs nose: test runners Python comparados
O pytest é o test runner Python moderno e ativamente mantido; o nose (e o nose2) é mais antigo, com o nose original sem manutenção.
O pytest é o framework de teste de facto do Python, com testes concisos baseados em assert, fixtures poderosas, parametrização e um vasto ecossistema de plugins. O nose estendia o unittest com descoberta de testes e foi amplamente usado, mas o nose original está sem manutenção e o nose2 tem atividade limitada. Projetos novos usam pytest; suítes nose antigas costumam ser migradas.
| pytest | nose | |
|---|---|---|
| Manutenção | Ativa | nose sem manutenção; nose2 limitado |
| Fixtures | Poderosas, componíveis | Básicas |
| Plugins | Grande ecossistema | Poucos |
| Asserções | assert puro (reescrito) | Estilo unittest |
| Melhor para | Todos os novos projetos Python | Apenas suítes legadas |
Em CI
O pytest se integra de forma limpa ao CI, com relatórios ricos, paralelismo com xdist e plugins de coverage. O nose funciona, mas carece de manutenção e de plugins modernos. Para qualquer novo projeto, o pytest é a escolha clara; migrar suítes nose para pytest é geralmente recomendado. Faça cache do ambiente Python para instalações rápidas de qualquer forma.
Acelere
Faça cache do ambiente pip/poetry e paralelize com pytest-xdist. Ambos rodam em CI runners; managed runners mais rápidos encurtam as etapas de instalação e teste.
O veredito
Use pytest para qualquer novo projeto Python - é moderno, mantido e muito mais rico. O nose só importa para suítes legadas que você ainda não migrou; planeje essa migração para pytest.