Containment assertions¶
The contains family, shared by strings, collections, dicts, and bytes.
Containment assertions mixin.
contains ¶
Asserts that val contains the given item or items.
Checks if the collection contains the given item or items using in operator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the item or items expected to be contained |
()
|
Examples:
Usage:
assert_that('foo').contains('f')
assert_that('foo').contains('f', 'oo')
assert_that(['a', 'b']).contains('b', 'a')
assert_that((1, 2, 3)).contains(3, 2, 1)
assert_that({'a': 1, 'b': 2}).contains('b', 'a') # checks keys
assert_that({'a', 'b'}).contains('b', 'a')
assert_that([1, 2, 3]).is_type_of(list).contains(1, 2).does_not_contain(4, 5)
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does not contain the item or items |
Tip
Use the contains_key() alias when working with
dict-like objects to be self-documenting.
See Also
contains_ignoring_case() -
for case-insensitive string contains
Source code in assertpy2/contains.py
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | |
does_not_contain ¶
Asserts that val does not contain the given item or items.
Checks if the collection excludes the given item or items using in operator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the item or items expected to be excluded |
()
|
Examples:
Usage:
assert_that('foo').does_not_contain('x')
assert_that(['a', 'b']).does_not_contain('x', 'y')
assert_that((1, 2, 3)).does_not_contain(4, 5)
assert_that({'a': 1, 'b': 2}).does_not_contain('x', 'y') # checks keys
assert_that({'a', 'b'}).does_not_contain('x', 'y')
assert_that([1, 2, 3]).is_type_of(list).contains(1, 2).does_not_contain(4, 5)
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does contain the item or items |
Note
Accepts a Matcher for any item, the same as
contains(): the assertion then fails when any
item of val matches it.
Tip
Use the does_not_contain_key() alias when working with
dict-like objects to be self-documenting.
Source code in assertpy2/contains.py
contains_only ¶
Asserts that val contains only the given item or items.
Checks if the collection contains only the given item or items using in operator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the only item or items expected to be contained |
()
|
Examples:
Usage:
assert_that('foo').contains_only('f', 'o')
assert_that(['a', 'a', 'b']).contains_only('a', 'b')
assert_that((1, 1, 2)).contains_only(1, 2)
assert_that({'a': 1, 'a': 2, 'b': 3}).contains_only('a', 'b')
assert_that({'a', 'a', 'b'}).contains_only('a', 'b')
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val contains anything not item or items |
Source code in assertpy2/contains.py
contains_sequence ¶
Asserts that val contains the given ordered sequence of items.
Checks if the collection contains the given sequence of items using in operator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the sequence of items expected to be contained |
()
|
Examples:
Usage:
assert_that('foo').contains_sequence('f', 'o')
assert_that('foo').contains_sequence('o', 'o')
assert_that(['a', 'b', 'c']).contains_sequence('b', 'c')
assert_that((1, 2, 3)).contains_sequence(1, 2)
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does not contains the given sequence of items |
Source code in assertpy2/contains.py
contains_duplicates ¶
Asserts that val is iterable and does contain duplicates.
Examples:
Usage:
assert_that('foo').contains_duplicates()
assert_that(['a', 'a', 'b']).contains_duplicates()
assert_that((1, 1, 2)).contains_duplicates()
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does not contain any duplicates |
Source code in assertpy2/contains.py
does_not_contain_duplicates ¶
Asserts that val is iterable and does not contain any duplicates.
Examples:
Usage:
assert_that('fox').does_not_contain_duplicates()
assert_that(['a', 'b', 'c']).does_not_contain_duplicates()
assert_that((1, 2, 3)).does_not_contain_duplicates()
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does contain duplicates |
Source code in assertpy2/contains.py
is_empty ¶
Asserts that val is empty.
Examples:
Usage:
assert_that('').is_empty()
assert_that([]).is_empty()
assert_that(()).is_empty()
assert_that({}).is_empty()
assert_that(set()).is_empty()
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val is not empty |
Source code in assertpy2/contains.py
is_not_empty ¶
Asserts that val is not empty.
Examples:
Usage:
assert_that('foo').is_not_empty()
assert_that(['a', 'b']).is_not_empty()
assert_that((1, 2, 3)).is_not_empty()
assert_that({'a': 1, 'b': 2}).is_not_empty()
assert_that({'a', 'b'}).is_not_empty()
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val is empty |
Source code in assertpy2/contains.py
contains_exactly ¶
Asserts that val contains exactly the given items in the given order.
Unlike contains_only() (which ignores
order) and contains_sequence()
(which allows extra items), this method requires exact count, items, and order.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the items expected, in exact order |
()
|
Examples:
Usage:
assert_that([1, 2, 3]).contains_exactly(1, 2, 3)
assert_that(['a', 'b']).contains_exactly('a', 'b')
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does not contain exactly the given items in order |
Source code in assertpy2/contains.py
contains_exactly_in_any_order ¶
Asserts that val contains exactly the given items, in any order.
Like contains_exactly() but ignoring
order: val and the given items must be equal as multisets, so duplicates count (each item
must occur exactly as many times as given). Unlike
contains_only() (which checks membership
both ways and ignores counts), an extra duplicate or a missing one fails.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the items expected, in any order |
()
|
Examples:
Usage:
assert_that([3, 1, 2]).contains_exactly_in_any_order(1, 2, 3)
assert_that(['b', 'a', 'b']).contains_exactly_in_any_order('a', 'b', 'b')
assert_that([1, 2, 2]).contains_exactly_in_any_order(1, 2) # fails (extra 2)
assert_that([1, 2]).contains_exactly_in_any_order(1, 2, 2) # fails (missing 2)
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does not contain exactly the given items in any order |
TypeError
|
if val is not iterable |
ValueError
|
if no items are given |
Source code in assertpy2/contains.py
contains_in_order ¶
Asserts that val contains the given items in the given order (as a subsequence).
Items must appear in the given order but do not need to be contiguous.
Unlike contains_sequence() which
requires contiguous items.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the items expected, in order (but not necessarily contiguous) |
()
|
Examples:
Usage:
assert_that([1, 5, 2, 8, 3]).contains_in_order(1, 2, 3)
assert_that(['a', 'x', 'b', 'y', 'c']).contains_in_order('a', 'b', 'c')
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val does not contain items in the given order |
Source code in assertpy2/contains.py
contains_only_once ¶
Asserts that val contains each given item exactly once.
Each given item must appear in val with a count of exactly one: an item absent from val is reported as missing, an item occurring more than once is reported as duplicated.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the items each expected to occur exactly once |
()
|
Examples:
Usage:
assert_that([1, 2, 3]).contains_only_once(1, 3)
assert_that('foo').contains_only_once('f')
assert_that([1, 2, 2, 3]).contains_only_once(2) # fails (occurs twice)
assert_that([1, 2, 3]).contains_only_once(4) # fails (missing)
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if any given item is missing from val or occurs more than once |
TypeError
|
if val is not iterable |
ValueError
|
if no items are given |
Source code in assertpy2/contains.py
is_in ¶
Asserts that val is equal to one of the given items.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the items expected to contain val |
()
|
Examples:
Usage:
assert_that('foo').is_in('foo', 'bar', 'baz')
assert_that(1).is_in(0, 1, 2, 3)
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val is not in the given items |
Source code in assertpy2/contains.py
is_not_in ¶
Asserts that val is not equal to one of the given items.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*items
|
object
|
the items expected to exclude val |
()
|
Examples:
Usage:
assert_that('foo').is_not_in('bar', 'baz', 'box')
assert_that(1).is_not_in(-1, -2, -3)
Returns:
| Name | Type | Description |
|---|---|---|
AssertionBuilder |
Self
|
returns this instance to chain to the next assertion |
Raises:
| Type | Description |
|---|---|
AssertionError
|
if val is in the given items |