searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

SONIC-MGMT自动化执行解析

2023-12-14 07:52:02
58
0

自微软发起SONIC(Software for Open Network in the Cloud)项目后, 国内一线互联网厂商以及运营商也都在持续跟进,而关于测试这一块,目前在github社区上 sonic-mgmt都不断有代码更新,本篇文章将介绍一下sonic-mgmt执行函数,希望能帮助对sonic-mgmt感兴趣的伙伴们理解,也欢迎交流讨论。

一、sonic-mgmt执行方式的变迁

在2019年前,sonic-mgmt依靠的还是ansible,通过使用ansible-playbook来执行用例,但随着sonic-mgmt的不断优化,目前社区框架已转为pytest,并重新定制了ansible模块用于与设备交互。目前有两种方法来执行pytest测试用例,一种是使用 tests/run_test.sh来执行,另一种则是直接使用pytest命令来执行,本篇文章将重点介绍run_test.sh的流程,解析这个函数起到哪些作用。

 

run_test.sh整体流程

函数可大体分为如下几块:

  • 帮助检查模块:负责对执行的指令进行检查,看是否包含一些必要的信息,比如是否指定了testbed,指定的被测设备名称是否存在等,如若执行指令不符合要求会停止程序并打印相关提示信息,来帮助执行人更正执行指令
  • 环境设置模块:负责获取一些环境的默认参数,export环境变量
  • 测试用例执行:将输入的执行指令解析后,拼接pytest执行指令,执行测试用例
  • 环境清理:完成测试后清理DUT配置

run_test.sh支持的部分常用指定参数表

参数

说明

-h -?

帮助提示

-a

是否进行auto-recover,可选参数<True|False>,默认True

-c

指定测试用例,例如-c module/test_case.py

-d

指定dutname,dutname会检查是否在指定的testbed里

-e

额外参数

-f

指定testbed,默认为testbed.csv

-i

指定设备信息文件,与testbed.csv文件对应,描述登录设备的ip、账号与密码

-k

指定loglevel,error|warning|info|debug (default debug)"

-l

指定cliloglevel, error|warning|info|debug (default warning)"

-n

指定topo名称,toponame会检查是否在指定的testbed里

-s

指定需要跳过的用例

-u

指定是否跳过util group用例,默认为True

 

二、使用run_test.sh执行测试用例的方法

1、执行某一类或者某一个单用例,通过-c 参数指定

/run_tests.sh -d <dut_name> -n <testbed_name> -u -c "snmp/test_*.py"

2、批量运行多个用例,如下命令将执行test_link_flap以及test_reboot用例

./run_tests.sh -d <dut_name> -n <testbed_name> [-s ] -u -c "platform_tests/test_link_flap.py platform_tests/test_reboot.py"

3、更灵活一点的方式,例如下列命令将执行snmp路径下,跳过snmp/test_snmp_cpu.py外的其他用例。

/run_tests.sh -d <dut_name> -n <testbed_name> -u -c "snmp/test_*.py" -s "snmp/test_snmp_cpu.py"

ps:使用这种执行方式需要注意必须使用双引号,否则会出现ERR。

0条评论
0 / 1000
9xxxm
4文章数
0粉丝数
9xxxm
4 文章 | 0 粉丝
原创

SONIC-MGMT自动化执行解析

2023-12-14 07:52:02
58
0

自微软发起SONIC(Software for Open Network in the Cloud)项目后, 国内一线互联网厂商以及运营商也都在持续跟进,而关于测试这一块,目前在github社区上 sonic-mgmt都不断有代码更新,本篇文章将介绍一下sonic-mgmt执行函数,希望能帮助对sonic-mgmt感兴趣的伙伴们理解,也欢迎交流讨论。

一、sonic-mgmt执行方式的变迁

在2019年前,sonic-mgmt依靠的还是ansible,通过使用ansible-playbook来执行用例,但随着sonic-mgmt的不断优化,目前社区框架已转为pytest,并重新定制了ansible模块用于与设备交互。目前有两种方法来执行pytest测试用例,一种是使用 tests/run_test.sh来执行,另一种则是直接使用pytest命令来执行,本篇文章将重点介绍run_test.sh的流程,解析这个函数起到哪些作用。

 

run_test.sh整体流程

函数可大体分为如下几块:

  • 帮助检查模块:负责对执行的指令进行检查,看是否包含一些必要的信息,比如是否指定了testbed,指定的被测设备名称是否存在等,如若执行指令不符合要求会停止程序并打印相关提示信息,来帮助执行人更正执行指令
  • 环境设置模块:负责获取一些环境的默认参数,export环境变量
  • 测试用例执行:将输入的执行指令解析后,拼接pytest执行指令,执行测试用例
  • 环境清理:完成测试后清理DUT配置

run_test.sh支持的部分常用指定参数表

参数

说明

-h -?

帮助提示

-a

是否进行auto-recover,可选参数<True|False>,默认True

-c

指定测试用例,例如-c module/test_case.py

-d

指定dutname,dutname会检查是否在指定的testbed里

-e

额外参数

-f

指定testbed,默认为testbed.csv

-i

指定设备信息文件,与testbed.csv文件对应,描述登录设备的ip、账号与密码

-k

指定loglevel,error|warning|info|debug (default debug)"

-l

指定cliloglevel, error|warning|info|debug (default warning)"

-n

指定topo名称,toponame会检查是否在指定的testbed里

-s

指定需要跳过的用例

-u

指定是否跳过util group用例,默认为True

 

二、使用run_test.sh执行测试用例的方法

1、执行某一类或者某一个单用例,通过-c 参数指定

/run_tests.sh -d <dut_name> -n <testbed_name> -u -c "snmp/test_*.py"

2、批量运行多个用例,如下命令将执行test_link_flap以及test_reboot用例

./run_tests.sh -d <dut_name> -n <testbed_name> [-s ] -u -c "platform_tests/test_link_flap.py platform_tests/test_reboot.py"

3、更灵活一点的方式,例如下列命令将执行snmp路径下,跳过snmp/test_snmp_cpu.py外的其他用例。

/run_tests.sh -d <dut_name> -n <testbed_name> -u -c "snmp/test_*.py" -s "snmp/test_snmp_cpu.py"

ps:使用这种执行方式需要注意必须使用双引号,否则会出现ERR。

文章来自个人专栏
sonic
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0