Cisco pyATS: Network Test & Automation Solution

Originally developed for internal Cisco engineering use, pyATS is at the
core of Cisco's Test Automation Solution.
It's currently used:
as the de-facto test framework for internal Cisco engineers across different
platform/functions, running millions of CI/CD, sanity, regression, scale,
HA, solution... tests on a monthly basis.
by thousands of network engineers and developers world-wide, outside of Cisco.
In Cisco, pyATS provides sanity, feature, solution,
system, and scale test & verification automation for products
ranging from routers/switches, to access points, firewalls and cable CPEs.

Built using extensible layers like lego blocks, pyATS solution consists of:
- a foundational platform (eg, the original pyATS framework)
- a standard open-source, platform/vendor agnostic library system (Genie)
- a web dashboard to manage your test suites, testbeds, test results and their
insights (XPRESSO)
- multiple bindings to other frameworks in the form of libraries, extensions,
plugins and APIs.
enabling users to build their own business logic and solutions on top of the
infrastructure stack.
Origins
Originally known as:
pyATS: the core framework, Genie: the pyATS standard library, and XPRESSO: the pyATS Web Dashboard
pyATS and Genie were developed side by side in the same team, in proper software
stack/layers, with pyATS being the generic all-purpose framework, and Genie
extending its capabilities and specializing in network device automation &
validation.
As much as we will continue to try and keep the software implementation layered,
modular & extensible, the team has been working hard on simplifying the user
experience & nomenclature.
As such - today, the two together forms the Cisco pyATS Solution, or simply
known as: pyATS.
Foundation
The pyATS base platform framework specializes in data-driven and reusable
testing, and is engineered for Agile, rapid development iterations.
This powerful, highly-pluggable Python framework is designed to enable
developers start with small, simple and linear test cases, then scale towards
large, complex and asynchronous test suites.
Library System
Genie: the standard pyATS network device library
Genie redefines how network engineers perform testing and scripting. It comes
out of the box with all the bits needed for Network Test Automation. Meaning
that network engineers and NetDevOps can be productive day one with Genie's
readily available, holistic and model-driven libraries.
Genie extends on and builds on pyATS to provide:
- device connectivity, parsers, apis
- platform agnostic Python object models for features such as ospf, bgp
- pool of reusable test cases
- YAML-driven test runner engine
UI Dashboard
XPRESSO: the pyATS Web UI Dashboard
Using pyATS and Genie, our users can build highly powerful and custom-tailored
scripts and test suites for their own business purposes. These scripts naturally
run in a shell/text, pure Python environment.
Once comfortable with script's functionality and flow, you'll need a place
to home them - so you and your peers can run them, on-demand, and visualize the
results. This is where XPRESSO comes in.
XPRESSO is the standard UI dashboard built around pyATS, featuring:
- test suite and test environment management
- testbed and test resources management
- test execution: on-demand, bundle-runs, scheduled-runs, supporting both
Jenkins and Docker-based execution back-ends
- live-view of tests while they are running
- results archiving, display, comparisons, analytics
- and more
XPRESSO can be deployed flexibly: in your lab as a test-center,
integrating into the rest of your CICD pipelines; or on a laptop, as a portable
test system: plug your laptop to a device's console, run diagnostics suites with
the click of a button.
Visit https://github.com/CiscoTestAutomation/xpresso for more details.
Agnostic By Design
The solution is built from the ground up to be an agnostic infrastructure. All
OS/Platform and management protocol support is defined and injected through
plugins, library implementations & extensions.
Out of the box, it comes with libraries that support:
- Cisco IOS
- Cisco IOXE
- Cisco IOSXR
- Cisco NXOS
- Cisco ASA
- ... etc
and allows the device connections via CLI, NETCONF, or RESTCONF.
Additional support for 3rd-party platforms and other management protocols can
be easily achieved through plugins and library extensions.