def test_method__add__(normalized_topology_example): """Проверка наличия метода __add__ и его работы""" top1 = task_23_3.Topology(normalized_topology_example) top1_size_before_add = len(top1.topology) top2 = task_23_3.Topology( {("R1", "Eth0/4"): ("R7", "Eth0/0"), ("R1", "Eth0/6"): ("R9", "Eth0/0")} ) top2_size_before_add = len(top2.topology) check_attr_or_method(top1, method="__add__") top3 = top1 + top2 assert isinstance( top3, task_23_3.Topology ), "Метод __add__ должен возвращать новый экземпляр класса Topology" assert len(top3.topology) == 8 assert ( len(top1.topology) == top1_size_before_add ), "После сложения изменился размер первой топологии. Метод __add__ не должен менять исходные топологии" assert ( len(top2.topology) == top2_size_before_add ), "После сложения изменился размер второй топологии. Метод __add__ не должен менять исходные топологии"
def test_attributes_created(): ''' Проверяем, что у объекта есть атрибуты ''' prefix = task_13_1.Route('192.168.1.0/24', '192.168.20.2', 'OSPF') check_attr_or_method(prefix, attr='prefix') check_attr_or_method(prefix, attr='nexthop') check_attr_or_method(prefix, attr='protocol')
def test_attributes_created(): """ Проверяем, что у объекта есть атрибуты """ prefix = task_13_1.Route("192.168.1.0/24", "192.168.20.2", "OSPF") check_attr_or_method(prefix, attr="prefix") check_attr_or_method(prefix, attr="nexthop") check_attr_or_method(prefix, attr="protocol")
def test_method_delete_node(normalized_topology_example, capsys): '''Проверка наличия метода delete_node и его работы''' norm_top = task_25_1c.Topology(normalized_topology_example) check_attr_or_method(norm_top, method='delete_node') node = 'SW1' delete_node_result = norm_top.delete_node(node) assert delete_node_result == None, 'Метод delete_node не должен ничего возвращать' ports_with_node = [ src for src, dst in norm_top.topology.items() if node in src or node in dst ] assert len(ports_with_node) == 0 assert len(norm_top.topology) == 3 #проверка удаления несуществующего устройства norm_top.delete_node(node) out, err = capsys.readouterr() node_msg = 'Такого устройства нет' if not node_msg in out: warnings.warn( UserWarning(stdout_incorrect_warning.format(node_msg, out)))
def test_special_methods_created(): class IntTest(task_12_4.OrderingMixin): def __init__(self, number): self._number = number def __eq__(self, other): return self._number == other._number def __lt__(self, other): return self._number < other._number int1 = IntTest(5) check_attr_or_method(int1, method='__ge__') check_attr_or_method(int1, method='__ne__') check_attr_or_method(int1, method='__le__') check_attr_or_method(int1, method='__gt__')
def test_new_attr_created(): ''' Проверяем, что у объекта есть переменные: allocate, unassigned ''' net = task_11_1.IPv4Network('100.7.1.0/26') check_attr_or_method(net, method='allocate') check_attr_or_method(net, attr='unassigned') check_attr_or_method(net, attr='hosts')
def test_new_attr_created(): """ Проверяем, что у объекта есть переменные: allocate, unassigned """ net = task_11_1.IPv4Network("100.7.1.0/26") check_attr_or_method(net, method="allocate") check_attr_or_method(net, attr="unassigned") check_attr_or_method(net, attr="hosts")
def test_method_add_link(normalized_topology_example, capsys): '''Проверка наличия метода add_link и его работы''' norm_top = Topology(normalized_topology_example) check_attr_or_method(norm_top, method='add_link') add_link_result = norm_top.add_link(('R1', 'Eth0/4'), ('R7', 'Eth0/0')) assert add_link_result == None, 'Метод add_link не должен ничего возвращать' assert ('R1', 'Eth0/4') in norm_top.topology assert len(norm_top.topology) == 7 #проверка добавления существующего линка norm_top.add_link(('R1', 'Eth0/4'), ('R7', 'Eth0/0')) out, err = capsys.readouterr() link_msg = 'Такое соединение существует\n' if not out == link_msg: warnings.warn(UserWarning(stdout_incorrect_warning.format(link_msg, out))) #проверка добавления линка с существующим портом norm_top.add_link(('R1', 'Eth0/4'), ('R7', 'Eth0/5')) out, err = capsys.readouterr() port_msg = 'Cоединение с одним из портов существует\n' if not out == port_msg: warnings.warn(UserWarning(stdout_incorrect_warning.format(port_msg, out)))
def test_methods(): net1 = task_14_2.Network('10.1.1.192/30') check_attr_or_method(net1, method="__iter__") check_attr_or_method(net1, method="__len__") check_attr_or_method(net1, method="__getitem__") assert isinstance( net1.__iter__(), collections.abc.Iterable), "метод должен возвращать итератор" for ip in net1.__iter__(): try: ip1 = ipaddress.ip_address(ip) except ValueError: raise ValueError('Итератор возвращает не IP адрес') assert net1.__len__( ) == 2, "метод возвращает неправильное количество адресов" assert net1.__getitem__( 1) == '10.1.1.194', "метод возвращает неправильное значение" assert net1.__getitem__( -1) == '10.1.1.194', "метод возвращает неправильное значение" with pytest.raises(IndexError) as excinfo: ip1 = net1.__getitem__(2)
def test_method_normalize(topology_with_dupl_links): """Проверяем, что в объекте Topology есть метод _normalize""" top_with_data = task_25_1a.Topology(topology_with_dupl_links) check_attr_or_method(top_with_data, method="_normalize")
def test_method_add_link_created(normalized_topology_example): """Проверяем, что в объекте Topology есть метод add_link""" norm_top = task_25_1d.Topology(normalized_topology_example) check_attr_or_method(norm_top, method="add_link")
def test_class_inheritance(first_router_from_devices_yaml): r1 = task_27_1a.CiscoSSH(**first_router_from_devices_yaml) assert isinstance(r1, BaseSSH), "Класс CiscoSSH должен наследовать BaseSSH" check_attr_or_method(r1, method="send_show_command") check_attr_or_method(r1, method="send_cfg_commands")
def test_class_attrs(): net1 = IPv4Network("10.1.1.0/24") check_attr_or_method(net1, attr="address") check_attr_or_method(net1, attr="mask") check_attr_or_method(net1, attr="allocated")
def test_method_delete_link_created(topology_with_dupl_links, normalized_topology_example): """Проверяем, что в объекте Topology есть метод delete_link""" norm_top = task_25_1b.Topology(normalized_topology_example) check_attr_or_method(norm_top, method="delete_link")
def test_attr_total_calls_created(): @task_7_5a.count_calls def do_thing(a, b): return a + b check_attr_or_method(do_thing, attr='total_calls')
def test_method_normalize(topology_with_dupl_links): '''Проверяем, что в объекте Topology есть метод _normalize''' top_with_data = Topology(topology_with_dupl_links) check_attr_or_method(top_with_data, method='_normalize')
def test_sequence_special_methods_created(): net = task_12_2.IPv4Network('100.7.1.0/29') check_attr_or_method(net, method='__getitem__') check_attr_or_method(net, method='__len__') check_attr_or_method(net, method='__contains__') check_attr_or_method(net, method='__iter__') check_attr_or_method(net, method='index') check_attr_or_method(net, method='count')
def test_sequence_special_methods_created(): ip = task_4_4.IPAddress('10.2.1.1') check_attr_or_method(ip, method='__ge__') check_attr_or_method(ip, method='__ne__') check_attr_or_method(ip, method='__le__') check_attr_or_method(ip, method='__gt__')
def test_class_inheritance(first_router_from_devices_yaml): r1 = task_27_2c.MyNetmiko(**first_router_from_devices_yaml) assert isinstance(r1, CiscoIosBase), "Класс MyNetmiko должен наследовать CiscoIosBase" check_attr_or_method(r1, attr='send_command') r1.send_command('sh ip int br', strip_command=False) r1.disconnect()
def test_class_attrs(): net1 = IPv4Network('10.1.1.0/24') check_attr_or_method(net1, attr='address') check_attr_or_method(net1, attr='mask') check_attr_or_method(net1, attr='allocated')
def test_class_method(): net1 = IPv4Network('10.1.1.0/24') check_attr_or_method(net1, method='hosts') check_attr_or_method(net1, method='allocate') check_attr_or_method(net1, method='unassigned')
def test_class_inheritance(first_router_from_devices_yaml): r1 = task_27_2c.MyNetmiko(**first_router_from_devices_yaml) r1.disconnect() assert isinstance( r1, CiscoIosSSH), "Класс MyNetmiko должен наследовать CiscoIosSSH" check_attr_or_method(r1, method="send_command")
def test_attr_put(): things = task_7_3.queue() check_attr_or_method(things, attr='put')
def test_class_method(): net1 = IPv4Network("10.1.1.0/24") check_attr_or_method(net1, method="hosts") check_attr_or_method(net1, method="allocate") check_attr_or_method(net1, method="unassigned")
def test_attr_topology(topology_with_dupl_links): """Проверяем, что в объекте Topology есть атрибут topology""" top_with_data = task_25_1b.Topology(topology_with_dupl_links) check_attr_or_method(top_with_data, attr="topology")
def test_attr_buy(): things = task_7_2a.count_total() check_attr_or_method(things, attr='buy')
def test_attributes_created(): """ Проверяем, что у класса есть метод from_tuple: """ check_attr_or_method(task_11_1a.IPv4Network, method="from_tuple")
def test_attributes_created(): ''' Проверяем, что у класса есть метод from_tuple: ''' check_attr_or_method(task_3_1a.IPv4Network, method='from_tuple')
def test_attr_topology(topology_with_dupl_links): '''Проверяем, что в объекте Topology есть атрибут topology''' top_with_data = task_4_3a.Topology(topology_with_dupl_links) check_attr_or_method(top_with_data, attr='topology')
def test_sequence_special_methods_created(): net = task_12_2.IPv4Network("100.7.1.0/29") check_attr_or_method(net, method="__getitem__") check_attr_or_method(net, method="__len__") check_attr_or_method(net, method="__contains__") check_attr_or_method(net, method="__iter__") check_attr_or_method(net, method="index") check_attr_or_method(net, method="count")