def xfail_equal_assert(expected_objs, actual_objs, issue_msg, *exclude_attrs): """Perform xfail equal assert based on deepcopy converted to list expected and actual objects according to 'issue_msg' string and '*exclude_attrs' tuple of excluding attributes' names (compare simple' collections based on excluding attributes (attributes' names and values, if 'False' then rise pytest's xfail, else pytest's fail. """ expected_excluded_attrs, actual_excluded_attrs = ( Entity.extract_simple_collections( help_utils.convert_to_list(expected_objs), help_utils.convert_to_list(actual_objs), *exclude_attrs)) assert_msg = messages.AssertionMessages.format_err_msg_equal( expected_excluded_attrs, actual_excluded_attrs) is_list_excluded_attrs_equal = (Entity.is_list_of_attrs_equal( expected_excluded_attrs, actual_excluded_attrs)) Test.check_xfail_or_fail(is_condition=is_list_excluded_attrs_equal, issue_msg=issue_msg, assert_msg=assert_msg)
def extended_assert(expected_objs, actual_objs, issue_msg, *exclude_attrs): """Perform extended assert for expected and actual objects according to dictionary of attributes to exclude and providing issue's message. Initially, based on original objects prepare expected and actual collections to performing of extended comparison procedure ('split_objs'), where: 'exp_objs_wo_ex_attrs', 'act_objs_wo_ex_attrs' - list objects w/o excluding attributes; 'exp_ex_attrs', 'act_ex_attrs' - list dictionaries w/ excluding attributes (items which contain attributes' names and values); 'issue_msg' - issue message for pytest xfail procedure; 'exclude_attrs' - list of excluding attributes names. Finally, make pytest assert for objects, then xfail assert for attributes. """ split_objs = (Test.extended_assert_w_excluded_attrs( expected_objs, actual_objs, *exclude_attrs)) assert (True if Entity.is_list_of_attrs_equal( split_objs["exp_ex_attrs"], split_objs["act_ex_attrs"]) else pytest.xfail(reason=issue_msg))
def xfail_equal_assert(expected_objs, actual_objs, issue_msg, *exclude_attrs): """Perform xfail equal assert based on deepcopy converted to list expected and actual objects according to 'issue_msg' string and '*exclude_attrs' tuple of excluding attributes' names (compare simple' collections based on excluding attributes (attributes' names and values, if 'False' then rise pytest's xfail, else pytest's fail. """ expected_excluded_attrs, actual_excluded_attrs = ( Entity.extract_simple_collections( help_utils.convert_to_list(expected_objs), help_utils.convert_to_list(actual_objs), *exclude_attrs)) assert_msg = messages.AssertionMessages.format_err_msg_equal( expected_excluded_attrs, actual_excluded_attrs) is_list_excluded_attrs_equal = ( Entity.is_list_of_attrs_equal( expected_excluded_attrs, actual_excluded_attrs)) Test.check_xfail_or_fail( is_condition=is_list_excluded_attrs_equal, issue_msg=issue_msg, assert_msg=assert_msg)