Hypothesis es una familia de bibliotecas de pruebas que le permiten escribir pruebas parametrizadas por una fuente de ejemplos. Luego, una implementación de hipótesis genera ejemplos simples y comprensibles que hacen que sus pruebas fallen. Esto simplifica la redacción de sus pruebas y las hace más poderosas al mismo tiempo, al permitir que el software automatice las partes aburridas y las realice con un estándar más alto que el de un humano, lo que le permite concentrarse en la lógica de prueba de nivel superior.
Este tipo de prueba a menudo se denomina "prueba basada en propiedades" y la implementación más conocida del concepto es la biblioteca QuickCheck de Haskell, pero Hypothesis difiere significativamente de QuickCheck y está diseñada para adaptarse idiomática y fácilmente a los estilos de prueba existentes que usted pueda utilizar. Estamos acostumbrados, sin ninguna familiaridad con Haskell o la programación funcional necesaria.
Hypothesis para Python es la implementación original y la única que actualmente está completamente lista para producción y se mantiene activamente.
Las ideas centrales de Hypothesis son independientes del idioma y, en principio, son adecuadas para cualquier idioma. Estamos interesados en desarrollar y soportar implementaciones para una amplia variedad de lenguajes, pero actualmente carecemos de los recursos para hacerlo, por lo que nuestros esfuerzos de portabilidad son principalmente prototipos.
Las dos implementaciones prototipo de Hypothesis para otros lenguajes son:
Además, hay una adaptación del motor central de Hipótesis y Conjetura a Rust. No tiene todas las funciones, pero a largo plazo esperamos trasladar gran parte de la funcionalidad existente a Rust y reconstruir Hypothesis para Python además de ella, lo que reducirá en gran medida el esfuerzo de migración a otros lenguajes.
Cualquiera o todos estos podrían convertirse en implementaciones completas con relativamente poco esfuerzo (no más de unos pocos meses de trabajo a tiempo completo), pero además del trabajo inicial, esto requeriría a alguien preparado para proporcionar o financiar esfuerzos de mantenimiento continuos para ellos. para que sea viable.