Hypothesis
Hypothesis is a family of testing libraries which let you write tests parametrized by a source of examples. A Hypothesis implementation then generates simple and comprehensible examples that make your tests fail. This simplifies writing your tests and makes them more powerful at the same time, by letting software automate the boring bits and do them to a higher standard than a human would, freeing you to focus on the higher level test logic. This sort of testing is often called "property-based testing", and the most widely known implementation of the concept is the Haskell library QuickCheck, but Hypothesis differs significantly from QuickCheck and is designed to fit idiomatically and easily into existing styles of testing that you are used to, with absolutely no familiarity with Haskell or functional programming needed. Hypothesis for Python is the original implementation, and the only one that is currently fully production ready and actively maintained.
(DeepL訳) Hypothesis は、例題のソースによってパラメトリック化されたテストを書くことができるテストライブラリのファミリーです。Hypothesis の実装は、テストを失敗させるシンプルで分かりやすい例を生成します。これにより、テストを書くことが簡単になり、同時にテストをより強力なものにすることができます。この種のテストはしばしば Property-Based Testingと呼ばれ、このコンセプトの最も広く知られた実装はHaskellライブラリのQuickCheckですが、HypothesisはQuickCheckとは大きく異なり、Haskellや関数型プログラミングの知識は全く必要なく、慣れ親しんだ既存のテストスタイルに慣用的に簡単にフィットするように設計されています。Hypothesis for Python はオリジナルの実装であり、現在完全に本番環境に対応し、積極的にメンテナンスされている唯一のものです。 Hypothesis for Python
Hypothesis is an advanced testing library for Python. It lets you write tests which are parametrized by a source of examples, and then generates simple and comprehensible examples that make your tests fail. This lets you find more bugs in your code with less work
(DeepL訳) HypothesisはPythonのための高度なテストライブラリです。例題のソースによってパラメトリック化されたテストを書くことができ、テストが失敗するようなシンプルで分かりやすい例題を生成してくれます。これにより、より少ない作業でより多くのバグを発見することができます。
code:python
@given(st.lists(st.floats(allow_nan=False, allow_infinity=False), min_size=1))
def test_mean(xs):
assert min(xs) <= mean(xs) <= max(xs)
code:shell
Falsifying example: test_mean(
)
Hypothesis is extremely practical and advances the state of the art of unit testing by some way. It's easy to use, stable, and powerful. If you're not using Hypothesis to test your project then you're missing out.
(DeepL訳) Hypothesisは非常に実用的で、ユニットテストの最先端を何らかの形で前進させます。使いやすく、安定していて、パワフルです。もしあなたがプロジェクトのテストにHypothesisを使っていないのであれば、あなたは損をしています。