Hypothesis est une famille de bibliothèques de tests qui vous permettent d'écrire des tests paramétrés par une source d'exemples. Une implémentation d'hypothèse génère ensuite des exemples simples et compréhensibles qui font échouer vos tests. Cela simplifie l'écriture de vos tests et les rend en même temps plus puissants, en permettant au logiciel d'automatiser les éléments ennuyeux et de les exécuter selon des normes plus élevées que celles d'un humain, vous permettant ainsi de vous concentrer sur la logique de test de niveau supérieur.
Ce type de test est souvent appelé « test basé sur les propriétés », et l'implémentation la plus connue du concept est la bibliothèque Haskell QuickCheck, mais Hypothesis diffère considérablement de QuickCheck et est conçue pour s'adapter idiomatiquement et facilement aux styles de tests existants que vous sont habitués, sans aucune connaissance de Haskell ou de la programmation fonctionnelle nécessaire.
Hypothesis for Python est l’implémentation originale et la seule qui est actuellement entièrement prête pour la production et activement maintenue.
Les idées fondamentales d’Hypothesis sont indépendantes de la langue et conviennent en principe à n’importe quelle langue. Nous souhaitons développer et prendre en charge des implémentations pour une grande variété de langages, mais nous manquons actuellement de ressources pour le faire, nos efforts de portage sont donc principalement des prototypes.
Les deux prototypes d'implémentation d'Hypothesis pour d'autres langages sont :
De plus, il existe un portage du moteur principal d’Hypothesis, Conjecture, vers Rust. Ce n'est pas une fonctionnalité complète, mais à long terme, nous espérons déplacer une grande partie des fonctionnalités existantes vers Rust et reconstruire Hypothesis pour Python par-dessus, réduisant ainsi considérablement l'effort de portage vers d'autres langages.
Tout ou partie de ces éléments pourraient être transformés en implémentations à part entière avec relativement peu d'efforts (pas plus de quelques mois de travail à temps plein), mais en plus du travail initial, cela nécessiterait quelqu'un prêt à fournir ou à financer des efforts de maintenance continus pour eux. pour être viable.