A pythonic assertion library.
poetry add conjecture
pip install conjecture
A basic assertion.
>>> import conjecture
>>> assert5== conjecture.has(lambdav: v <10)
>>> assert5== conjecture.has(lambdav: v >10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionErrorMatching none.
>>> import conjecture
>>> assertNone== conjecture.none()Matching anything.
>>> import conjecture
>>> assertNone== conjecture.anything()
>>> assert123== conjecture.anything()
>>> assert"abc"== conjecture.anything()Matching keys.
>>> import conjecture
>>> assert {"a": 1} == conjecture.has_key("a")
>>> assert {"a": 1} == conjecture.has_key("a", of=1)
>>> assert {"a": 1} == conjecture.has_key("a", of=conjecture.less_than(5))Matching instances of a class.
>>> import conjecture
>>> assert123== conjecture.instance_of(int)
>>> assert"abc"== conjecture.instance_of((str, bytes))Matching values.
>>> import conjecture
>>> assert123== conjecture.equal_to(123)
>>> assert"abc"== conjecture.equal_to("abc")Matching attributes.
>>> import conjecture
>>> assert1== conjecture.has_attribute("__class__")
>>> assert1== conjecture.has_attribute("__class__", of=int)
>>> assert1== conjecture.has_attribute("__class__", of=conjecture.instance_of(type))Matching lesser values.
>>> import conjecture
>>> assert5== conjecture.greater_than(1)
>>> assert5== conjecture.greater_than_or_equal_to(1)Matching greater values.
>>> import conjecture
>>> assert1== conjecture.less_than(5)
>>> assert1== conjecture.less_than_or_equal_to(5)Matching empty collections.
>>> import conjecture
>>> assertlist() == conjecture.empty()
>>> assertset() == conjecture.empty()
>>> asserttuple() == conjecture.empty()
>>> assertdict() == conjecture.empty()Matching length of collections.
>>> import conjecture
>>> assert [1, 2, 3, 4, 5] == conjecture.length_of(5)
>>> assert [1, 2, 3] == conjecture.length_of(conjecture.less_than(5))Matching string prefixes.
>>> import conjecture
>>> assert"foo bar baz"== conjecture.prefixed_with("foo")
>>> assertb"foo bar baz"== conjecture.prefixed_with(b"foo")Matching string suffixes.
>>> import conjecture
>>> assert"foo bar baz"== conjecture.suffixed_with("baz")
>>> assertb"foo bar baz"== conjecture.suffixed_with(b"baz")Matching all conditions.
>>> import conjecture
>>> assert5== conjecture.has(lambdav: v <=5) & conjecture.has(lambdav: v=>5)
>>> assert6== conjecture.has(lambdav: v <=5) & conjecture.has(lambdav: v=>5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> assert5== conjecture.all_of(
... conjecture.has(lambdav: v <=5),
... conjecture.has(lambdav: v=>5)
... )
>>> assert6== conjecture.all_of(
... conjecture.has(lambdav: v <=5),
... conjecture.has(lambdav: v=>5)
... )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionErrorMatching any conditions.
>>> import conjecture
>>> assert0== conjecture.has(lambdav: v ==5) | conjecture.has(lambdav: v ==0)
>>> assert5== conjecture.has(lambdav: v ==5) | conjecture.has(lambdav: v ==0)
>>> assert6== conjecture.has(lambdav: v ==5) | conjecture.has(lambdav: v ==0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> assert5== conjecture.any_of(
... conjecture.has(lambdav: v ==5),
... conjecture.has(lambdav: v ==0)
... )
>>> assert6== conjecture.any_of(
... conjecture.has(lambdav: v ==5),
... conjecture.has(lambdav: v ==0)
... )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionErrorA negative assertion.
>>> import conjecture
>>> assert5!= conjecture.has(lambdav: v ==10)
>>> assert5==~conjecture.has(lambdav: v ==10)
>>> assert10==~conjecture.has(lambdav: v ==10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionErrorThis project is licensed under the MIT licence.
All documentation and images are licenced under the Creative Commons Attribution-ShareAlike 4.0 International License.
This project uses Semantic Versioning.