Source code for airtest.core.assertions

"""
Assertions for Airtest
"""

from airtest.core.helper import logwrap
from airtest.core.cv import loop_find
from airtest.core.error import TargetNotFoundError
from airtest.core.settings import Settings as ST


[docs]@logwrap def assert_exists(v, msg=""): """ Assert target exists on device screen :param v: target to be checked :param msg: short description of assertion, it will be recorded in the report :raise AssertionError: if assertion fails :return: coordinates of the target :platforms: Android, Windows, iOS :Example: >>> assert_exists(Template(r"tpl1607324047907.png"), "assert exists") """ try: pos = loop_find(v, timeout=ST.FIND_TIMEOUT, threshold=ST.THRESHOLD_STRICT or v.threshold) return pos except TargetNotFoundError: raise AssertionError("%s does not exist in screen, message: %s" % (v, msg))
[docs]@logwrap def assert_not_exists(v, msg=""): """ Assert target does not exist on device screen :param v: target to be checked :param msg: short description of assertion, it will be recorded in the report :raise AssertionError: if assertion fails :return: None. :platforms: Android, Windows, iOS :Example: >>> assert_not_exists(Template(r"tpl1607324047907.png"), "assert not exists") """ try: pos = loop_find(v, timeout=ST.FIND_TIMEOUT_TMP) raise AssertionError("%s exists unexpectedly at pos: %s, message: %s" % (v, pos, msg)) except TargetNotFoundError: pass
[docs]@logwrap def assert_equal(first, second, msg="", snapshot=True): # noqa """ Assert two values are equal :param first: first value :param second: second value :param msg: short description of assertion, it will be recorded in the report :raise AssertionError: if assertion fails :return: None :platforms: Android, Windows, iOS :Example: >>> assert_equal(1, 1, msg="assert 1==1") """ assert first == second, "%s and %s are not equal, message: %s" % (first, second, msg)
[docs]@logwrap def assert_not_equal(first, second, msg="", snapshot=True): # noqa """ Assert two values are not equal :param first: first value :param second: second value :param msg: short description of assertion, it will be recorded in the report :raise AssertionError: if assertion :return: None :platforms: Android, Windows, iOS :Example: >>> assert_not_equal(1, 2, msg="assert 1!=2") """ assert first != second, "%s and %s are equal, message: %s" % (first, second, msg)
[docs]@logwrap def assert_true(expr, msg="", snapshot=True): # noqa """ Assert expression is True ( bool(expr) is True ) Note that this is equivalent to bool(expr) is True and not to expr is True (use assertIs(expr, True) for the latter). :Example: >>> assert_true(1==1, msg="assert 1==1") """ assert bool(expr), "expression is not True, message: %s" % msg
[docs]@logwrap def assert_false(expr, msg="", snapshot=True): # noqa """ Assert expression is False ( bool(expr) is False ) :Example: >>> assert_false(1==2, msg="assert 1!=2") """ assert not bool(expr), "expression is not False, message: %s" % msg
[docs]@logwrap def assert_is(first, second, msg="", snapshot=True): # noqa """ Test that first and second are the same object. :Example: >>> assert_is(1, 1, msg="assert 1 is 1") """ assert first is second, "%s and %s are not the same object, message: %s" % (first, second, msg)
[docs]@logwrap def assert_is_not(first, second, msg="", snapshot=True): # noqa """ Test that first and second are not the same object. :Example: >>> assert_is_not(1, 2, msg="assert 1 is not 2") """ assert first is not second, "%s and %s are the same object, message: %s" % (first, second, msg)
[docs]@logwrap def assert_is_none(expr, msg="", snapshot=True): # noqa """ Test that expr is None. :Example: >>> assert_is_none(None, msg="assert None is None") """ assert expr is None, "%s is not None, message: %s" % (expr, msg)
[docs]@logwrap def assert_is_not_none(expr, msg="", snapshot=True): # noqa """ Test that expr is not None. :Example: >>> assert_is_not_none(1, msg="assert 1 is not None") """ assert expr is not None, "%s is None, message: %s" % (expr, msg)
[docs]@logwrap def assert_in(first, second, msg="", snapshot=True): # noqa """ Test that first is in second. :Example: >>> assert_in(1, [1, 2], msg="assert 1 in [1, 2]") """ assert first in second, "%s is not in %s, message: %s" % (first, second, msg)
[docs]@logwrap def assert_not_in(first, second, msg="", snapshot=True): # noqa """ Test that first is not in second. :Example: >>> assert_not_in(3, [1, 2], msg="assert 3 not in [1, 2]") """ assert first not in second, "%s is in %s, message: %s" % (first, second, msg)
[docs]@logwrap def assert_is_instance(obj, cls, msg="", snapshot=True): # noqa """ Test that obj is an instance of cls (which can be a class or a tuple of classes, as supported by isinstance()). :Example: >>> assert_is_instance(1, int, msg="assert 1 is int") """ assert isinstance(obj, cls), "%s is not an instance of %s, message: %s" % (obj, cls, msg)
[docs]@logwrap def assert_not_is_instance(obj, cls, msg="", snapshot=True): # noqa """ Test that obj is not an instance of cls. :Example: >>> assert_not_is_instance(1, str, msg="assert 1 is not str") """ assert not isinstance(obj, cls), "%s is an instance of %s, message: %s" % (obj, cls, msg)
[docs]@logwrap def assert_greater(first, second, msg="", snapshot=True): # noqa """ Test that first is greater than second. (first > second) :Example: >>> assert_greater(2, 1, msg="assert 2 > 1") """ assert first > second, "%s is not greater than %s, message: %s" % (first, second, msg)
[docs]@logwrap def assert_greater_equal(first, second, msg="", snapshot=True): # noqa """ Test that first is greater than or equal to second. (first >= second) :Example: >>> assert_greater_equal(1, 1, msg="assert 1 >= 1") """ assert first >= second, "%s is not greater than or equal to %s, message: %s" % (first, second, msg)
[docs]@logwrap def assert_less(first, second, msg="", snapshot=True): # noqa """ Test that first is less than second. (first < second) :Example: >>> assert_less(1, 2, msg="assert 1 < 2") """ assert first < second, "%s is not less than %s, message: %s" % (first, second, msg)
[docs]@logwrap def assert_less_equal(first, second, msg="", snapshot=True): # noqa """ Test that first is less than or equal to second. (first <= second) :Example: >>> assert_less_equal(1, 1, msg="assert 1 <= 1") """ assert first <= second, "%s is not less than or equal to %s, message: %s" % (first, second, msg)