# GW_PROJECT **Repository Path**: mayunjr/gw_project ## Basic Information - **Project Name**: GW_PROJECT - **Description**: Not well written, for reference only If you also like Python, please click on start - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2023-07-29 - **Last Updated**: 2025-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 框架介绍 本框架主要是基于 Python + unittest + log + snmp + ntp + telnet + paramiko + 思博伦TestCenter 实现的工业交换机自动化框架。 * git地址: [https://gitee.com/mayunjr/gw_project.git](https://gitee.com/mayunjr/gw_project.git) * 项目参与者: Hard Work * 技术支持邮箱: t18581787470@163.com * 个人博客地址: 如果对您有帮助,请点亮 小星星 以表支持,谢谢 ## 前言 * 公司突然要求你做自动化,但是没有代码基础不知道怎么做?或者有自动化基础,但是不知道如何系统性的做自动化, * 放在文档文件中维护,不知道如何处理多业务的逻辑? * 那么这里 Gitte 中开源的自动化框架,将为你解决这些问题。 * 框架主要使用 python 语言编写,结合 unittest 进行二次开发,已实现交换机二层功能。 * 本框架支持思博伦TestCenter自动发送流量,基于用户的test case, ## 实现功能 * 测试数据隔离, 实现数据驱动 * 支持基于用户配置,自动打流验证 * 日志模块: 打印每个接口的日志信息,同样订制了开关,可以决定是否需要打印日志 * 思博伦STC自动化测试,接口说明 * stc_based.py * 基于思博伦STC的自动化测试平台,已经实现的功能: * EthernetII,VLAN,dstMac & srcMac auto, IPV4,TCP,UDP * 继承关系: * stc_based.py ---> stc的父类,所有子类必须继承此类,必须提供STC的安装路径 * |____ l2_traffic_util.py ---> 继承了stc_based.py 拓展了ethII的相关功能 * |____ l3_traffic_util.py ---> 继承了l2_traffic_util.py 拓展了IP相关功能 * |____ l4_traffic_util.py ---> 继承了l3_traffic_util.py 拓展了TCP/UDP相关功能 * 参数说明: * 见init()方法 * 函数说明: * stc_init() * //此处要调用子类中的方法, 如:l2_traffic_util.py中的函数 * set_apply() 应用工程设置 * set_enable_capture() 开启抓包 * set_save_result_file() 保存STC配置 * start_flow() 开始打流 * set_flow_stop() 停止打流 * set_save_capture_result_file() 设置抓包保存路径 * set_stc_destroy() 销毁工程 * 调用方法: * 子类调用父类 * l2_traffic_util.py * Create_l2_traffic 继承于 Stc_global,在此之上,拓展L2层流的属性 * 参数说明: * 见init_l2_traffic()函数 * * 函数说明: * 必须先初始化父类Stc_global * init_l2_traffic() 初始化变量,根据调用不同的函数传递不同的值,必须先初始化此方法 * create_ethII_flow() 创建EthernetII的流,需要在init_l2_traffic()中传入srcMac,dstMac,frameSize等参数 * l2.set_traffic_ger_ana_burst() * create_l2_vid_tag() 创建EthernetII带VLAN tag的流,需要先调用create_ethII_flow(),并在init_l2_traffic()传输vid * create_dstMac_auto() 创建目的MAC自动增长的EthernetII的流,需要先调用create_ethII_flow(),可选create_l2_vid_tag() * create_srcMac_auto() 创建源MAC自动增长的EthernetII的流,需要先调用create_ethII_flow(),可选create_l2_vid_tag() * set_traffic_ger_ana_burst() 设置发包模式为burst和收包 * set_traffic_ger_ana_load() hard work on programming ... # 调用过程: * 初始化 * stc_Chassis_addr = stc_cfg.stc_Chassis_addr # 思博伦STC的ip地址,如:10.11.0.247 * slot = stc_cfg.slot # 思博伦的槽位 如:1 * port_A = stc_cfg.port_A # 思博伦的port 如:14 * port_B = stc_cfg.port_B # 思博伦的port 如:15 * port_B_OB = stc_cfg.port_B_OB # 思博伦的port 如:16 * stc_install_path = stc_cfg.stcInstallDir # 思博伦STC的安装路径 如:"C:\stc_instal_dir" * cls.l2 = Create_l2_traffic(stc_install_path, stc_Chassis_addr, slot, port_A, port_B) # 必须初始化父类方法 * arg_dict = {"srcMac": "00:00:20:00:00:00", "dstMac": "00:00:01:00:00:01", "frameSize": 128, "BURSTS": "BURSTS", "BurstSize": 1, "Duration": 100, "FixedLoad": 100 } #### 调用方法 * l2.stc_init() # 连接思博伦,占用端口,设置log路径和命名 * l2.create_ethII_flow(arg_dict) # 创建L2层流,参见如上#函数说明 * * # 参见#父类Stc_global#函数说明 * self.set_traffic_ger_ana_burst * self.l2.set_apply() * self.l2.set_enable_capture() * self.l2.set_save_result_file() * self.l2.start_flow() * self.l2.set_flow_stop() * self.l2.set_save_capture_result_file() * self.l2.set_stc_destroy() * """ ## 联系方式 使用过程中,如遇到问题,欢迎使用 Issue! ## 目录结构 ├── common // 配置 │ ├── remote_device_cfg.py // 被测设备公共配置 │ ├── setting.py // 环境路径存放区域 ├── logs // 日志层 ├── snmp_utils // snmp工具 │ ├—— snmgV3_do_get_util.py // snmgV3 get │ ├—— snmp_trap_util_util.py // snmp trap │ ├—— snmpV1_V2_do_get_util.py // snmp v1 v2 get │ ├—— snmpV1_V2_do_set_util.py // snmp v1 v2 set ├── stc_utils // 思博伦TestCenter工具 │ ├—— py_util // python实现思博伦TestCenter │ │ └── stc_cfgs // 思博伦配置 │ │ └── stc_cfgs // 思博伦配置 │ ├—— Anatomy2.py // 思博伦自动化 │ ├—— tcl_util // tcl实现思博伦TestCenter ├── test_app_main // 测试用例代码 │ ├—— case_cfg // 测试用例配置 │ ├—— test_cases // 测试用例方法 │ ├—— untitest* // 测试用例入口 ├── tools_dev_and_sys // 被测设备和系统工具 │ ├—— sys_secure // 系统安全 │ ├—— web_secure // web安全 │ ├—— tool_file_r_w.py // 文件读写 │ ├—— tool_get_remote_file.py // 远程文件下载 │ ├—— tool_parse_pkt_field.py // 解析抓包 │ ├—— tool_ssh_base.py // SSH工具 │ ├—— tool_telnet_base.py // Telnet工具 ├── utils // 工具类 │ └── asser_type.py // 断言 │ └── log_setting // 日志处理模块 │ └── log_util.py // 日志处理模块 │ └── my_loger.py // 打印处理模块 │ └── ntp_offset.py // ntp处理模块 │ └── timeControl.py // 时间处理 ├── Readme.md // help ## 依赖库 colorlog~=6.7.0 colorama~=0.4.4 ntplib~=0.4.0 future~=0.18.2 pysnmp~=4.4.12 pyasn1~=0.4.8 tqdm~=4.65.0 pythonping~=1.1.4 requests~=2.25.1 pyshark~=0.6 paramiko~=2.7.2 pytest~=6.2.4 selenium~=4.10.0 common~=0.1.2 scapy~=2.4.5 matplotlib~=3.6.0 #建议手动指定依赖包版本pyasn1 version 0.4.8 numpy~=1.21.0 ## 安装教程 首先,执行本框架之后,需要搭建好 python、环境 搭建python教程:[http://c.biancheng.net/view/4161.html](http://c.biancheng.net/view/4161.html) 如上环境如都搭建好,则安装本框架的所有第三方库依赖,执行如下命令 pip install -r requirements.txt ### 二次开发 本框架已实现大部分功能,可以依据现有接口和实例代码进行二次开发 ### 其他 本框架为持续开发中,目前是3.0升级版本,升级之后的功能更加丰富, Last submission date 2023-9-17 version=3.0 update: 支持思博伦stc自动化测试 ******************************************************* 以上便是整个框架的使用说明,这个框架属于个人业余时间开发,大家如果在使用中遇到什么问题,或者有相关建议,可以随时反馈给我, 框架内容会随着大家的反馈,持续更新!邮箱地址:t18581787470@163.com 如果觉得框架有帮助到你,麻烦收藏一下哦~~谢谢。:) ## 版本更新记录 * V2.0.0(2023-07-07) * V3.0.0(2023-09-17) ## 赞赏 如果这个库有帮助到你并且你很想支持库的后续开发和维护,那么你可以点亮start!