def test_class(): '''Проверяем работу объекта''' net = task_3_1.IPv4Network('100.7.1.0/29') assert len(net.hosts) == 6, "В данной сети должно быть 6 хостов" assert net.broadcast == '100.7.1.7', "Broadcast адрес для этой сети 100.7.1.7" net.allocate('100.7.1.2') net.allocate('100.7.1.4') net.allocate('100.7.1.5') assert len(net.hosts) == 6, "Переменная hosts должна возвращать все хосты" assert len( net.allocated) == 3, "Переменная allocated должна содержать 3 хоста" assert len( net.unassigned ) == 3, "Переменная unassigned должна возвращать на 3 хоста меньше" # test net.hosts rewrite try: net.hosts = 'a' except AttributeError: pass else: pytest.fail("Запись переменной hosts должна быть запрещена") # test net.unassigned rewrite try: net.unassigned = 'a' except AttributeError: pass else: pytest.fail("Запись переменной unassigned должна быть запрещена")
def test_new_attr_created(): ''' Проверяем, что у объекта есть переменные: allocate, unassigned ''' net = task_3_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_attributes_created(): ''' Проверяем, что у объекта есть атрибуты: address, mask, broadcast, allocated ''' net = task_3_1.IPv4Network('100.7.1.0/26') check_attr_or_method(net, attr='address') check_attr_or_method(net, attr='mask') check_attr_or_method(net, attr='broadcast') check_attr_or_method(net, attr='allocated') assert net.allocated == tuple( ), "По умолчанию allocated должен содержать пустой кортеж"
def test_class(): '''Проверяем работу объекта''' list_of_ips = ['8.8.4.2', '8.8.4.4', '8.8.4.6'] correct_return_value = get_reach_unreach(list_of_ips) net1 = task_3_1.IPv4Network('8.8.4.0/29') net1.allocate('8.8.4.2') net1.allocate('8.8.4.4') net1.allocate('8.8.4.6') scan_net = task_3_2.PingNetwork(net1) assert scan_net._ping('8.8.4.4') in ( True, False), "Метод _ping должен возвращать True или False" try: task_3_2.PingNetwork._ping('8.8.4.4') in (True, False) except TypeError: pytest.fail("Метод _ping должен быть статическим")
def test_return_types(): '''Проверяем работу объекта''' net = task_3_1.IPv4Network('100.7.1.0/26') assert type(net.hosts) == tuple, "hosts должен возвращать кортеж" assert type(net.unassigned) == tuple, "unassigned должен возвращать кортеж"
else: return False def scan(self, workers=5, include_unassigned=False): reachable = [] unreachable = [] if include_unassigned is False: devices = self.ip_obj.allocated else: devices = self.ip_obj.unassigned + self.ip_obj.allocated with ThreadPoolExecutor(max_workers=3) as executor: result = executor.map(self._ping, devices) for device, output in zip(devices, result): if output is True: reachable.append(device) else: unreachable.append(device) return (reachable, unreachable) if __name__ == '__main__': net1 = task_3_1.IPv4Network('8.8.4.0/29') net1.allocate('8.8.4.2') net1.allocate('8.8.4.4') net1.allocate('8.8.4.6') print(net1.allocated) print(net1.unassigned) ping_net = PingNetwork(net1) print(ping_net.scan()) print(ping_net.scan(include_unassigned=True))