def format_err_msg_contains(cls, left, right): """Return customized and detailed error message after assert contains comparison. """ # comparison of entities assertion_error_msg = cls.err_contains.format(left, right) # processing of entity if (isinstance(left, Entity.all_entities_classes()) and isinstance(right, Entity.all_entities_classes())): if not cls.is_entities_have_err_info(left, right): cls.set_entities_diff_info(left, right) assertion_error_msg = cls.diff_error_msg(left, right) # processing list of entities if (isinstance(left, Entity.all_entities_classes()) and isinstance(right, list) and all( isinstance(_right, Entity.all_entities_classes()) for _right in right)): assertion_error_msg = "" for _right in right: left = copy.copy(left) if not cls.is_entities_have_err_info(left, _right): cls.set_entities_diff_info(left, _right) assertion_error_msg = (assertion_error_msg + cls.diff_error_msg(left, _right)) return assertion_error_msg
def format_err_msg_contains(cls, left, right): """Return customized and detailed error message after assert contains comparison. """ # comparison of entities assertion_error_msg = cls.err_contains.format(left, right) # processing of entity if (isinstance(left, Entity.all_entities_classes()) and isinstance(right, Entity.all_entities_classes())): if not cls.is_entities_have_err_info(left, right): cls.set_entities_diff_info(left, right) assertion_error_msg = cls.diff_error_msg(left, right) # processing list of entities if (isinstance(left, Entity.all_entities_classes()) and isinstance(right, list) and all(isinstance(_right, Entity.all_entities_classes()) for _right in right)): assertion_error_msg = "" for _right in right: left = copy.copy(left) if not cls.is_entities_have_err_info(left, _right): cls.set_entities_diff_info(left, _right) assertion_error_msg = (assertion_error_msg + cls.diff_error_msg(left, _right)) return assertion_error_msg
def is_entities_have_err_info(cls, left, right): """Check if entities are instances of entities and have needed attributes and keys to make result error comparison message. """ return (isinstance(left, Entity.all_entities_classes()) and isinstance(right, Entity.all_entities_classes()) and hasattr(left, "diff_info") and hasattr(right, "diff_info") and getattr(left, "diff_info") and getattr(right, "diff_info"))
def is_entities_have_err_info(cls, left, right): """Check if entities are instances of entities and have needed attributes and keys to make result error comparison message. """ return ( isinstance(left, Entity.all_entities_classes()) and isinstance(right, Entity.all_entities_classes()) and hasattr(left, "diff_info") and hasattr(right, "diff_info") and getattr(left, "diff_info") and getattr(right, "diff_info"))
def format_err_msg_equal(cls, left, right): """Return customized and detailed error message after assert equal comparison. """ # comparison of entities assertion_error_msg = cls.err_common.format(left, right) # processing of entity if isinstance(left and right, Entity.all_entities_classes()): if not cls.is_entities_have_err_info(left, right): cls.set_entities_diff_info(left, right) assertion_error_msg = cls.diff_error_msg(left, right) # processing list of entities if (isinstance(left and right, list) and all(isinstance(_left and _right, Entity.all_entities_classes()) for _left, _right in zip(left, right))): assertion_error_msg = "" for _left, _right in zip(sorted(left), sorted(right)): if not cls.is_entities_have_err_info(_left, _right): cls.set_entities_diff_info(_left, _right) assertion_error_msg = (assertion_error_msg + cls.diff_error_msg(_left, _right)) return assertion_error_msg
def format_err_msg_equal(cls, left, right): """Return customized and detailed error message after assert equal comparison. """ # comparison of entities assertion_error_msg = cls.err_common.format(left, right) # processing of entity if isinstance(left and right, Entity.all_entities_classes()): if not cls.is_entities_have_err_info(left, right): cls.set_entities_diff_info(left, right) assertion_error_msg = cls.diff_error_msg(left, right) # processing list of entities if (isinstance(left and right, list) and all( isinstance(_left and _right, Entity.all_entities_classes()) for _left, _right in zip(left, right))): assertion_error_msg = "" for _left, _right in zip(sorted(left), sorted(right)): if not cls.is_entities_have_err_info(_left, _right): cls.set_entities_diff_info(_left, _right) assertion_error_msg = (assertion_error_msg + cls.diff_error_msg(_left, _right)) return assertion_error_msg
class AssertionMessages(CommonMessages): """Class contains constants and methods to make messages after assertion procedures. """ _line = "\n-----\n" _double_diff = "\nExpected:\n{}\nActual:\n{}\n" _triple_diff = "\nExpected:\n{}\nActual First:\n{}\nActual Second:\n{}\n" err_two_entities_diff = (_line + "\nFULL:" + _double_diff + "\nSAME:" + _double_diff + "\nDIFF:" + _double_diff) err_three_entities_diff = (_line + "\nFULL:" + _triple_diff + "\nSAME:" + _triple_diff + "\nDIFF:" + _triple_diff) _all_entities_classes = tuple(Entity.all_entities_classes()) @classmethod def diff_error_msg(cls, left, right): """Return formatted error message for two entities.""" return cls.err_two_entities_diff.format(left, right, left.diff_info["equal"], right.diff_info["equal"], left.diff_info["diff"], right.diff_info["diff"]) @classmethod def is_entities_have_err_info(cls, left, right): """Check if entities are instances of entities and have needed attributes and keys to make result error comparison message. """ return (isinstance(left and right, cls._all_entities_classes) and hasattr(left and right, "diff_info") and getattr(left, "diff_info") and getattr(right, "diff_info")) @classmethod def set_entities_diff_info(cls, left, right): """Get and set entities diff info attributes info.""" comparison = Entity.compare_entities(left, right) left.diff_info = comparison["self_diff"] right.diff_info = comparison["other_diff"] @classmethod def format_err_msg_equal(cls, left, right): """Return customized and detailed error message after assert equal comparison. """ # comparison of entities assertion_error_msg = cls.err_common.format(left, right) # processing of entity if isinstance(left and right, cls._all_entities_classes): if not cls.is_entities_have_err_info(left, right): cls.set_entities_diff_info(left, right) assertion_error_msg = cls.diff_error_msg(left, right) # processing list of entities if (isinstance(left and right, list) and all( isinstance(_left and _right, cls._all_entities_classes) for _left, _right in zip(left, right))): assertion_error_msg = "" for _left, _right in zip(sorted(left), sorted(right)): if not cls.is_entities_have_err_info(_left, _right): cls.set_entities_diff_info(_left, _right) assertion_error_msg = (assertion_error_msg + cls.diff_error_msg(_left, _right)) return assertion_error_msg @classmethod def format_err_msg_contains(cls, left, right): """Return customized and detailed error message after assert contains comparison. """ # comparison of entities assertion_error_msg = cls.err_contains.format(left, right) # processing of entity if isinstance(left and right, cls._all_entities_classes): if not cls.is_entities_have_err_info(left, right): cls.set_entities_diff_info(left, right) assertion_error_msg = cls.diff_error_msg(left, right) # processing list of entities if (isinstance(left, cls._all_entities_classes) and isinstance(right, list) and all( isinstance(_right, cls._all_entities_classes) for _right in right)): assertion_error_msg = "" for _right in right: left = copy.copy(left) if not cls.is_entities_have_err_info(left, _right): cls.set_entities_diff_info(left, _right) assertion_error_msg = (assertion_error_msg + cls.diff_error_msg(left, _right)) return assertion_error_msg