TLDR: pyATS is an automation tests framework that features a parsing library named Genie. With over 1500 parsers obtainable, Genie can parse machine output from multiple distributors, together with Cisco, Juniper, and Big-IP. In combination with pyATS, you have a complete take a look at suite that can provide self esteem your network is jogging nutritious.

Have you at any time been questioned by your supervisor, “Can we verify feature ‘X’ is configured and functioning throughout each and every device in our network?” This may possibly be a straightforward attribute these as SNMPv3, or a thing additional advanced like a particular routing layout. Validating the operation of your network at any place in time can be a difficult endeavor. However, we can ease that agony with an automation screening framework, such as pyATS.

Cisco pyATS is an automation screening framework that Cisco has crafted and employed internally to examination/validate functions in their NOS platforms. It was produced to the public in 2014. The main pyATS framework is still closed-resource, as the code is not publicly out there. On the other hand, the companion parsing library, Genie (you may well also listen to it referred to as pyATS library), has been open-sourced and encourages the public to add. This put up will concentration on the pyATS framework.


The pyATS framework is expansive and can look complicated with the range of functions it offers. The target of this site article is to keep at the “10,000 ft view”. There may well be further weblog posts that dive further into the individual capabilities.

PyATS is a take a look at automation framework, built to develop and run regular exams in opposition to your infrastructure. The companion parsing library I stated previously, Genie, is made to be utilized with pyATS. Alongside one another, these two libraries produce a comprehensive test suite, with a testing framework and seller-agnostic knowledge parsers. The Genie library can be a complete independent blog site write-up, but the one takeaway is that it is a strong details parsing library that couples really well with pyATS, but it is different from pyATS.

pyATS Parts

Now that you know that pyATS is applied for building and working tests in opposition to your infrastructure, let us dive into some of the elements that make up the library.


The testbed is basically your device stock file. Other automation frameworks, this sort of as Nornir and Ansible, have a related notion. A testbed file is a YAML file that describes the units you are operating checks in opposition to. Some of the essential elements contain the unit hostname, IP tackle, OS type (utilised to dictate which Genie parsers to use), and a established of credentials to connect to the gadget. There are loads a lot more knowledge details you can include in the testbed, these types of as how to link to the product (CLI, YANG, Relaxation). You can even describe the tests environment’s topology by defining product interfaces and how the products hook up to a person yet another by defining backlinks inside of your testbed file. If you are fascinated in understanding additional about the distinctive information details, examine out the backlinks in the references at the close of the write-up.


A testcase is a selection of smaller assessments, aiming to validate a distinct function or functionality. For case in point, you may well generate a testcase to validate that BGP is up and operational. This testcase may perhaps incorporate lesser exams that validate BGP neighbor associations, BGP routes are current in the routing table, etcetera. The specific test final results roll up to the testcase outcome. If you’d like to find out more about testcases and other sections that make up a testscript, examine out the links in the references at the end of the publish.


A testscript is a Python file applied to construction exam sections. Every single testscript has its very own reporting and logging. Testscripts are meant to be extensible, so that you can insert testcases in the foreseeable future. A testscript can be executed as a standalone script, with results printed to STDOUT, or as element of a career. Standalone execution is well-liked for fast improvement but need to be executed as component of a position the moment it’s all set for generation use.


Work in pyATS let you to run many testscripts. Inside a work, every single testscript is executed as a process. Every single job aggregates its logs and results to a single log file and reporter object. The logging and reporting mechanisms within just a task can be a individual post. For now, just know that a task’s logs and effects are aggregated when being run inside of a job. Right after a position is run, an archive is created. An archive is a zipped folder that contains final results data files (XML/JSON formats), log data files, and some added runtime details. These archives can be handy for more effects evaluation.

There are lots of much more elements that make up pyATS, but these are some of the significant items. For a lot more info about the other elements, I very recommend checking out the pyATS documentation (connection in the references).

USE Circumstances

To get your creative imagination flowing, let’s just take a glance at a handful of use cases that would be excellent matches for utilizing pyATS.

  1. Certifying a new community OS version
  2. Validating operational point out of the community in advance of/following a change
  3. Working intrusive assessments to make sure network resilience

This checklist is not exhaustive and only utilised for demonstration. Let’s get a fast glance at each individual one.

CERTIFYING A Community OS Edition

1 of the worst things that can come about when you are upgrading devices on your network to a new edition of program is operating into a bug. This bug may be obvious or rooted deep in the OS and only activated when a unique element is configured. Regardless, administration and other stakeholders do not care that a bug was triggered. They want to know why it was not caught before rolling out OS upgrades to creation devices. PyATS can provide a degree of certainty that a new OS variation performs with the certain components and software characteristics you have configured in your network. The pyATS testing framework can configure the capabilities you care about, validate every feature’s features, and cleanup following screening has accomplished. It is an automated technique that can speedily turn into a de facto system just before a new OS is rolled out to creation.

VALIDATING OPERATIONAL State OF THE Network In advance of/After A Improve

Validating variations on the community has been an concern as old as time. It is a part of each engineer’s change approach but can in some cases be overlooked when it arrives to documentation. PyATS offers the framework to verify the operational state of your community and has constructed-in reporting functionality for you to immediately determine out what validation checks have handed or failed. PyATS also provides comprehensive logging that captures product logs, so you will be capable to offer all the good documentation that exhibits you verified the alter was successful.

Working INTRUSIVE Exams TO Ensure Network RESILIENCE

I would contemplate this to be a a lot more superior use case, and just one that shouldn’t be attempted until eventually you have obtain-in from bigger amounts of administration. After you are comfortable with managing browse-only checks versus your community, then you can start out introducing a very little bit of “chaos”. The appropriate title for this style of screening is “chaos engineering”. Netflix grew to become well-liked for using this observe as a result of a resource they built named Chaos Monkey (https://netflix.github.io/chaosmonkey/). The notion is that random configuration is pushed to your manufacturing environment to guarantee the infrastructure is resilient to failures. This random configuration may include things like shutting down BGP on a main router or rebooting a couple gadgets. Regardless of what the chaos may well be, the plan is to purposely bring about failures inside of the infrastructure. You could be asking yourself, “Why should really I perform this sort of a cruel act towards myself and my workforce?”. Very well, the intention is for you to attain publicity to the faults inside of your network (and resolve them!) ahead of a actual catastrophic failure takes place.

Disclaimer: I have never professional chaos engineering in a generation natural environment. I bundled this use circumstance to support showcase what’s possible at the time you’ve attained self esteem in your infrastructure, working with automation.


In December 2022, I held an internal tech discuss at NetCraftsmen about producing pyATS testscripts. In the demo, I created a pyATS testscript that includes a testcase for screening BGP. The BGP testcase incorporates the adhering to checks: examine for proven BGP neighbors, shut down BGP by shutting the WAN interface, test the routing desk for obtained BGP routes (should be none), reactivate BGP, and lastly, check out the routing table once more for received BGP routes (really should see BGP routes). The goal of this demo was to clearly show how we can verify BGP operation employing ‘show’ commands, whilst changing the take a look at surroundings.

Here’s a hyperlink to the code repository: https://github.com/dannywade/20221215-pyATS-Testscripts

Sense free to open a Github problem to question concerns or offer responses.


We went around a great deal in this web site submit, and I absolutely did not address all the functions of pyATS. The reason of this write-up was to touch on some of the substantial-degree ideas inside the pyATS framework, and with any luck , get you contemplating about how you can introduce automated community testing into your surroundings. If you’re intrigued in automatic community screening and not absolutely sure where by to start off, you should experience absolutely free to make contact with us and we can get you started!

REFERENCES/History Examining


Resource hyperlink