{"library":"pyats-aetest","title":"pyATS AEtest","description":"pyATS AEtest (version 26.3) is the primary test automation engine within the Cisco pyATS framework, designed for structured and hierarchical test script development, particularly for network device testing. It provides robust features such as common setup/cleanup stages, testcase parametrization, and comprehensive result reporting. The library typically follows a monthly or bi-monthly release cadence, aligning with broader pyATS framework updates.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pyats.aetest"],"cli":null},"imports":["from pyats import aetest"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from pyats import aetest\n\nclass CommonSetup(aetest.CommonSetup):\n    \"\"\"Common Setup for all testcases\"\"\"\n    @aetest.subsection\n    def initial_setup(self):\n        self.parent.parameters['my_data'] = 'initialized_data'\n        self.passed('Common Setup completed')\n\nclass TestcaseOne(aetest.Testcase):\n    \"\"\"A simple testcase\"\"\"\n    @aetest.test\n    def check_data(self):\n        data = self.parent.parameters.get('my_data')\n        if data == 'initialized_data':\n            self.passed(f'Data matched: {data}')\n        else:\n            self.failed(f'Unexpected data: {data}')\n\nclass CommonCleanup(aetest.CommonCleanup):\n    \"\"\"Common Cleanup for all testcases\"\"\"\n    @aetest.subsection\n    def final_cleanup(self):\n        self.passed('Common Cleanup completed')\n\nif __name__ == '__main__':\n    # To run this script:\n    # 1. Save it as e.g., my_test.py\n    # 2. Execute: python my_test.py\n    # For advanced features like testbed parsing, use 'pyats run testbed my_test.py'\n    aetest.main()","lang":"python","description":"This quickstart demonstrates the basic structure of a pyATS AEtest script, including `CommonSetup`, `Testcase`, and `CommonCleanup` sections. It defines a simple testcase that uses data set up in the CommonSetup. The `aetest.main()` call allows the script to be executed directly.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"25.9","pypi_latest":"26.4","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":70,"avg_install_s":9.7,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyats.aetest","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"217.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyats.aetest","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":11.1,"import_time_s":null,"mem_mb":null,"disk_size":"108M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyats.aetest","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyats.aetest","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":9.1,"import_time_s":null,"mem_mb":null,"disk_size":"114M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyats.aetest","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyats.aetest","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":7.1,"import_time_s":null,"mem_mb":null,"disk_size":"106M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyats.aetest","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyats.aetest","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":7.5,"import_time_s":null,"mem_mb":null,"disk_size":"105M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyats.aetest","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"110.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyats.aetest","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":13.5,"import_time_s":null,"mem_mb":null,"disk_size":"262M"}]}}