Decorator Matchers

Matchers that decorate other matchers for better expression.

class hamcrest.core.core.described_as.DescribedAs(description_template, matcher, *values)

Bases: BaseMatcher[Any]

Parameters:
describe_mismatch(item, mismatch_description)

Generates a description of why the matcher has not accepted the item.

The description will be part of a larger description of why a matching failed, so it should be concise.

This method assumes that matches(item) is False, but will not check this.

Parameters:
  • item (Any) – The item that the Matcher has rejected.

  • mismatch_description (Description) – The description to be built or appended to.

Return type:

None

describe_to(description)

Generates a description of the object.

The description may be part of a description of a larger object of which this is just a component, so it should be worded appropriately.

Parameters:

description (Description) – The description to be built or appended to.

Return type:

None

matches(item, mismatch_description=None)

Evaluates the matcher for argument item.

If a mismatch is detected and argument mismatch_description is provided, it will generate a description of why the matcher has not accepted the item.

Parameters:
  • item (Any) – The object against which the matcher is evaluated.

  • mismatch_description (Optional[Description]) –

Returns:

True if item matches, otherwise False.

Return type:

bool

hamcrest.core.core.described_as.described_as(description, matcher, *values)

Adds custom failure description to a given matcher.

Parameters:
  • description (str) – Overrides the matcher’s description.

  • matcher (Matcher[Any]) – The matcher to satisfy.

  • value1,... – Optional comma-separated list of substitution values.

Return type:

Matcher[Any]

The description may contain substitution placeholders %0, %1, etc. These will be replaced by any values that follow the matcher.

class hamcrest.core.core.is_.Is(matcher)

Bases: BaseMatcher[T]

Parameters:

matcher (Matcher[T]) –

describe_mismatch(item, mismatch_description)

Generates a description of why the matcher has not accepted the item.

The description will be part of a larger description of why a matching failed, so it should be concise.

This method assumes that matches(item) is False, but will not check this.

Parameters:
  • item (T) – The item that the Matcher has rejected.

  • mismatch_description (Description) – The description to be built or appended to.

Return type:

None

describe_to(description)

Generates a description of the object.

The description may be part of a description of a larger object of which this is just a component, so it should be worded appropriately.

Parameters:

description (Description) – The description to be built or appended to.

matches(item, mismatch_description=None)

Evaluates the matcher for argument item.

If a mismatch is detected and argument mismatch_description is provided, it will generate a description of why the matcher has not accepted the item.

Parameters:
  • item (T) – The object against which the matcher is evaluated.

  • mismatch_description (Optional[Description]) –

Returns:

True if item matches, otherwise False.

Return type:

bool

hamcrest.core.core.is_.is_(x: Type) Matcher[Any]
hamcrest.core.core.is_.is_(x: Matcher[T]) Matcher[T]
hamcrest.core.core.is_.is_(x: T) Matcher[T]

Decorates another matcher, or provides shortcuts to the frequently used is(equal_to(x)) and is(instance_of(x)).

Parameters:

x – The matcher to satisfy, or a type for instance_of matching, or an expected value for equal_to matching.

This matcher compares the evaluated object to the given matcher.

Note

PyHamcrest’s is_ matcher is unrelated to Python’s is operator. The matcher for object identity is same_instance.

If the x argument is a matcher, its behavior is retained, but the test may be more expressive. For example:

assert_that(value, less_than(5))
assert_that(value, is_(less_than(5)))

If the x argument is a type, it is wrapped in an instance_of matcher. This makes the following statements equivalent:

assert_that(cheese, instance_of(Cheddar))
assert_that(cheese, is_(instance_of(Cheddar)))
assert_that(cheese, is_(Cheddar))

Otherwise, if the x argument is not a matcher, it is wrapped in an equal_to matcher. This makes the following statements equivalent:

assert_that(cheese, equal_to(smelly))
assert_that(cheese, is_(equal_to(smelly)))
assert_that(cheese, is_(smelly))

Choose the style that makes your expression most readable. This will vary depending on context.