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 |
TypeError
|
if val is not a container or iterable |
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
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 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 | |
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 |
TypeError
|
if val is not a container or iterable |
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 |