def test_get_attr_bad(self): class Empty(object): pass e = Empty() with pytest.raises(AttributeError): get_attr(e, 'anything') e.first = Empty() with pytest.raises(AttributeError): getattr(e, 'first.anything')
def test_get_attr_with_default(self): class Empty(object): pass e = Empty() assert get_attr(e, 'anything', default=mock.sentinel.DEFAULT) == mock.sentinel.DEFAULT # default shouldn't hide something that's actually there e.anything = mock.sentinel.ANYTHING assert get_attr(e, 'anything', default=mock.sentinel.DEFAULT) == mock.sentinel.ANYTHING # default should cover deeper lookups assert get_attr(e, 'anything.anything', default=mock.sentinel.DEFAULT) == mock.sentinel.DEFAULT
def test_get_attr_with_default(self): class Empty(object): pass e = Empty() assert get_attr(e, 'anything', default=mock.sentinel.DEFAULT) == mock.sentinel.DEFAULT # default shouldn't hide something that's actually there e.anything = mock.sentinel.ANYTHING assert get_attr( e, 'anything', default=mock.sentinel.DEFAULT) == mock.sentinel.ANYTHING # default should cover deeper lookups assert get_attr(e, 'anything.anything', default=mock.sentinel.DEFAULT) == mock.sentinel.DEFAULT
def test_separator_can_be_specified(self, simple_object): assert get_attr(simple_object, 'second|first', separator='|') == mock.sentinel.SECOND
def test_get_attr_successful_three_level(self, simple_object): assert get_attr(simple_object, 'third.first.first') == mock.sentinel.THIRD
def test_get_attr_successful_two_level(self, simple_object): assert get_attr(simple_object, 'second.first') == mock.sentinel.SECOND
def test_get_attr_successful_one_level(self, simple_object): assert get_attr(simple_object, 'first') == mock.sentinel.FIRST