Hipótese é uma família de bibliotecas de teste que permite escrever testes parametrizados por uma fonte de exemplos. Uma implementação de hipótese gera exemplos simples e compreensíveis que fazem seus testes falharem. Isso simplifica a escrita de seus testes e os torna mais poderosos ao mesmo tempo, permitindo que o software automatize as partes chatas e execute-as com um padrão mais elevado do que um ser humano faria, liberando você para se concentrar na lógica de teste de nível superior.
Esse tipo de teste é frequentemente chamado de "teste baseado em propriedade", e a implementação mais conhecida do conceito é a biblioteca Haskell QuickCheck, mas a hipótese difere significativamente do QuickCheck e é projetada para se ajustar idiomaticamente e facilmente aos estilos de teste existentes que você estamos acostumados, sem absolutamente nenhuma familiaridade com Haskell ou programação funcional necessária.
A hipótese para Python é a implementação original e a única que atualmente está totalmente pronta para produção e mantida ativamente.
As ideias centrais da hipótese são independentes do idioma e, em princípio, são adequadas para qualquer idioma. Estamos interessados em desenvolver e dar suporte a implementações para uma ampla variedade de linguagens, mas atualmente não temos recursos para fazê-lo, então nossos esforços de portabilidade são principalmente protótipos.
As duas implementações de protótipo de hipótese para outras linguagens são:
Além disso, há uma porta do mecanismo principal de Hipótese, Conjectura, para Rust. Não está completo, mas no longo prazo esperamos mover grande parte da funcionalidade existente para Rust e reconstruir a Hipótese para Python em cima dela, reduzindo bastante o esforço de portabilidade para outras linguagens.
Qualquer um ou todos estes poderiam ser transformados em implementações completas com relativamente pouco esforço (não mais do que alguns meses de trabalho em tempo integral), mas, além do trabalho inicial, isso exigiria alguém preparado para fornecer ou financiar esforços contínuos de manutenção para eles. para ser viável.