رفتن به محتوا
بازگشت به وبلاگ
خودکارسازی

آزمایش خودکار شبکه با pytest و Nornir

نوشتن آزمایش‌های خودکار شبکه با pytest و Nornir: بررسی اتصال، اعتبارسنجی پیکربندی و پایپلاین‌های آزمایش رگرسیون.

آبان ۱۴۰۴
۱۲ دقیقه مطالعه

مقدمه

اتوماسیون شبکه عالی است، اما چگونه تأیید میکنید شبکه بعد از تغییرات درست کار میکند؟ تست خودکار شبکه به شما اجازه میدهد رفتار مورد انتظار را تعریف کنید و بهطور مداوم آزمایش کنید.

ابزارهای تست

ابزارهدف
Batfishتحلیل پیکربندی آفلاین
Nornir + pytestتست وضعیت واقعی دستگاه
NAPALMAPI شبکه فروشنده-خنثی

راهاندازی pytest برای شبکه

BASH
pip install pytest nornir nornir-netmiko napalm

نمونه تست

PYTHON
def test_interface_up(nr):
    '''تمام اینترفیسهای مورد انتظار باید Up باشند.'''
    expected_up = {
        "router01": ["GigabitEthernet0/0", "GigabitEthernet0/1"],
    }
    for host, interfaces in expected_up.items():
        output = get_output(nr, host, "show interfaces status")
        for iface in interfaces:
            assert "connected" in output, f"{host}: {iface} down!"

def test_default_route_exists(nr):
    '''همه روترها باید مسیر پیشفرض داشته باشند.'''
    result = nr.run(task=netmiko_send_command, command_string="show ip route 0.0.0.0")
    for host, task_result in result.items():
        assert "0.0.0.0/0" in task_result[0].result, f"{host}: no default route!"

اجرای تستها

BASH
pytest tests/ -v
pytest tests/ -v --html=report.html

خلاصه

  • تستهای خودکار شبکه رگرسیونها را قبل از کاربران شناسایی میکنند
  • Nornir + pytest برای تست وضعیت دستگاه زنده استفاده کنید
  • Batfish برای تحلیل آفلاین تغییرات پیکربندی استفاده کنید
  • تستها را در CI/CD بعد از هر تغییر اجرا کنید