Claude Code Plugins

Community-maintained marketplace

Feedback

network-conftest-generator

@majiayu000/claude-skill-registry
5
0

生成并配置用于新华三技术有限公司H3C网络设备自动化的 pytest `conftest.py`,`conftest.py`文件主要负责测试背景搭建和测试背景清理。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name network-conftest-generator
description 生成并配置用于新华三技术有限公司H3C网络设备自动化的 pytest `conftest.py`,`conftest.py`文件主要负责测试背景搭建和测试背景清理。

网络测试环境生成器

目标

参考工作流程制定Todo List, 按照任务列表, 生成 conftest.py 文件,该文件是网络设备测试背景的代码文件。它负责测试背景搭建和测试背景清理,确保所有网络测试用例在统一的组网环境中执行并提供设备资源、拓扑配置和测试数据的共享机制。

核心资源::H3C 知识库检索指南

重要策略: 检索必须遵循 “循环迭代”“全库扫描” 的原则。

可用知识库(每一轮检索都必须覆盖以下所有库): 6. design_ke (用户设计经验库)

  1. background_ke (历史背景库,conftest.py代码仓库)
  2. v9_press_example (常见组网配置库)
  3. example_ke (测试用例实现库)
  4. cmd_ke (具体的命令行/配置参数库)
  5. press_config_des (标准化配置步骤/流程)

知识库检索脚本:

使用一下bash脚本可以完成指定的知识库检索。

  1. design_ke库检索,存储用户历史测试经验,需要优先重点参考: 需要配置时间段策略

    /opt/coder/venvs/comware-test/bin/python {当前skill路径}/script/data_search_h3c_example.py --description "IGMP snooping查询组" --indexname "design_ke"
    
  2. background_ke库检索,该库有历史背景背景代码conftest.py: 搭建DPI功能,必须检索

    /opt/coder/venvs/comware-test/bin/python {当前skill路径}/script/data_search_h3c_example.py --description "DPI安全测试" --indexname "background_ke"
    
  3. v9_press_example库检索,该库有常见的组网配置: 配置交换机实现多网段互通

    /opt/coder/venvs/comware-test/bin/python {当前skill路径}/script/data_search_h3c_example.py --description "交换机多网段配置" --indexname "v9_press_example"
    
  4. example_ke库检索,该库有测试用例的实现代码,包含部分背景配置代码: DHCP中继测试用例,必须检索

    /opt/coder/venvs/comware-test/bin/python {当前skill路径}/script/data_search_h3c_example.py --description "DHCP中继" --indexname "example_ke"
    
  5. cmd_ke库检索,用于存储网络设备命令行: 配置接口IP地址

    /opt/coder/venvs/comware-test/bin/python {当前skill路径}/script/data_search_h3c_example.py --description "ip address " --indexname "cmd_ke"
    
    /opt/coder/venvs/comware-test/bin/python {当前skill路径}/script/data_search_h3c_example.py --description "配置接口IP地址" --indexname "cmd_ke"
    
  6. press_config_des库检索,存储标准化的配置步骤说明,提供详细的配置流程和参数说明。: 需要配置时间段策略

    /opt/coder/venvs/comware-test/bin/python {当前skill路径}/script/data_search_h3c_example.py --description "时间段配置" --indexname "press_config_des"
    

工作流程

步骤 1:初始化检查

目标:确保工作区内存在一个可用的 conftest.py 基准文件。

  1. 检查文件:使用 Ls 检查当前工作区是否存在 conftest.py
  2. 执行拷贝 (如果缺失)
    • 若文件不存在
      • 读取模版文件:{当前skill路径}/templates/conftest.py
      • 使用cp命令将该文件拷贝到当前工作区中。
      • (此时工作区内已确保存在 conftest.py,继续执行步骤 2)
    • 若文件已存在
      • 直接跳到步骤 2。

步骤 2:深度校验与循环知识检索

目标:这是最关键的一步,通过多轮循环检索且每轮都遍历所有数据库,通过动态调整检索词的循环,从宏观到微观完全吃透业务背景,从各个维度(背景+命令+步骤)深刻理解业务,,对比“当前conftest.py文件能力”与“用户实际需求”。

严禁事项:

  • 严禁在检索开始前就制定好所有的检索轮次(例如:“我计划第1轮查BGP,第2轮查邻居...”)。这是错误的!
  • 必须执行完一轮检索,阅读并分析返回内容后,才能决定下一轮查什么。

必做事项

  • Todo List:每完成一轮的检索,必须更新Todo List, 但是不要删除步骤4的校验
  1. 读取现状

    • 读取当前工作区下 conftest.py 的完整内容。
    • 读取拓扑文件(通常是 .topox),获取物理设备列表(如 DUT1, DUT2),了解各个设备间链接方式。
  2. 动态检索循环 (The Dynamic Loop): 请严格按照以下算法执行,直到业务逻辑完全清晰:

    • 初始启动 (Seed)

      • 提取用户输入中的核心名词(例如用户输入“BGP add-path”,初始词为“BGP add-path”)。
    • 执行循环 (Start Loop)

      1. 全库扫描 (Action)

        • 使用当前的“关键词”,连续执行 5 次检索命令,遍历所有 5 个数据库。
      2. 结果分析 (Observation)

        • 仔细阅读 5 个库的返回内容。
        • 寻找“未知的已知”:注意那些在返回结果中出现,但你还不知道具体配置方法的新术语
          • 示例:你搜索了“BGP”,结果中提到了“需要配置 Route-Reflector 才能生效”。此时,“Route-Reflector”就是检索结果暴露出的新盲区。
      3. 决策判定 (Decision)

        • 问自己:我是否已经掌握了完成用户需求所需的每一个具体的命令行、参数取值和配置顺序?
        • YES -> 退出循环,进入步骤 3。
        • NO -> 更新关键词
          • 关键规则:新的关键词必须直接来源于上一轮的检索结果,而不是用户的原始输入。
          • 示例:下一轮的关键词应调整为“配置 BGP Route-Reflector 命令”,而不是继续搜“BGP”。
      4. 重返第一步:使用新关键词再次执行全库扫描。

  3. 需求对比

    • 基于完全理解的业务背景,分析用户的具体测试需求,
    • 检查当前代码内容是否已包含用户所需的逻辑。
    • 注意:如果是刚拷贝的默认模版,通常因缺乏特定配置(如只有单设备)而被判定为“不符合”。

步骤 3:决策与执行

根据步骤 2 的对比结果执行:

情况 A:内容不符合 (Mismatch)

  1. 制定计划 (Todo List)
    • 向用户简述修改计划。
  2. 重构代码与查漏补缺
    • 在编写具体代码行时,如果发现步骤 2 的检索仍有遗漏,必须再次触发全库扫描
    • 针对 Todo List 中的每一项,确保有明确的数据库检索结果作为支撑,严禁臆造配置,严禁删除步骤4
  3. 覆盖写入:使用 Edit 将更新后的代码写入 conftest.py
  4. 反馈:回复“已通过多轮全库检索参考 H3C 知识库,深入理解业务背景后更新了 conftest.py。”

情况 B:内容符合 (Match)

  1. 动作:不做任何修改。
  2. 反馈:回复“现有 conftest.py 已符合需求,无需修改。”。

步骤4:校验

校验最终的conftest.py文件,避免出现以下错误。

  1. 全覆盖验证:确认在每一轮检索中,是否都没有遗漏任何一个数据库?(即使你觉得某个库可能没用,也要查,以防万一)。
  2. 关键词进化:确认下一轮的检索词是否基于上一轮的学习成果进行了优化?
  3. 深刻理解:在开始写代码前,你是否已经像一个 H3C 网络专家一样完全理解了该特性?
  4. conftest.py文件中不需要使用CheckCommand()或者assert()等函数来验证配置结果。
  5. 不要使用topox中不存在的设备名或者或者端口, 注意是大小问题和是否存在问题。 例如一下拓扑的设备名是dut1,端口名是port1。
       <LINK_LIST>
       <LINK>
          <NODE>
          <DEVICE>dut1</DEVICE>
          <PORT>
             <NAME>port1</NAME>
             <TYPE/>
             <IPAddr/>
             <IPv6Addr/>
             <SLOT_TYPE/>
             <TAG/>
          </PORT>
          </NODE>
          <NODE>
          <DEVICE>PC</DEVICE>
          <PORT>
             <NAME>port1</NAME>
             <TYPE/>
             <IPAddr/>
             <IPv6Addr/>
             <SLOT_TYPE/>
             <TAG/>
          </PORT>
          </NODE>
       </LINK>
    </LINK_LIST>
    
。
6. 不要使用atf_check和atf_assert,这种方式是违法的,对于H3C设备相关的检查只可以使用CheckCommand, 例如:
 ```python
 gl.DUT.CheckCommand('检查端口信息,预期链路状态UP,IP地址正确', 
                cmd=f'display interface Ethernet0/1',
       expect=['Line protocol current state: UP', 'Internet Address is 11.91.255.79/24'],
       is_strict=True, 
                relationship='and',
       stop_max_attempt=3, wait_fixed=2)
  1. 接口使用注意实现事项:
    • 端口ipv4地址掩码: gl.dut.port1.mask
    • 端口ipv4地址反掩码: gl.dut.port1.hostmask
    • 端口ipv6地址: gl.dut.port1.ip6
    • 端口ipv6地址掩码: gl.dut.port1.mask6
    • 端口ipv6地址掩码长度: gl.dut.port1.masklen6
    • atf_logs(f'脚本记录', 'info') ----- 只支持info warn error 三个级别
    • 等待时间: atf_wait('等待原因描述', 5) ---- 单位为秒