基于Python 实现 Spirent TestCenter 自动化

关于Python API

1.Spirent TestCenter 自动化提供了一个基于Python语言的API。有关受支持的Python软件和操作系统版本的信息,请参见Spirent TestCenter基础和测试包的发布说明。

2.Python语言API支持标准的 API 函数集和标准的 Spirent TestCenter 数据模型。主要描述了Python API语法,提供了该API的简要概要,并描述了如何使用Python API 创建和运行 Spirent TestCenter 自动化测试的示例。

  1. .Python 环境中的 API 语法
  2. .Python API概要
  3. .Python 示例

3.在Linux上使用Spirent TestCenter 使用 Python API 时需要配置Python3 。Python API for Spirent TestCenter 要求在Python3.4语言设置中使用——启用-共享选项来编译libpython3.4.so文件。在使用Python3.4 API of Spirent TestCenter之前,请检查libpython3.4.so文件是否存在。注意:文件名可能略有不同,这取决于您的Linux发行版和版本,它是唯一一个在 /lib directory目录中可执行的文件。

4.使用此命令可以检查您是否有所需的Python库:$find -name “libpython3.4so” 2>/dev/null

Python环境中的API语法

在Python API中,Spirent TestCenter 自动化函数是StcPython类的实例方法。下面的代码片段创建了一个类的实例。实例化了类之后,就可以在引用API函数时使用变量stc作为前缀。

from StcPython import StcPythonstc = StcPython()[...]stc.apply()

注意:下面总结了应用于Spirent TestCenter的Python语法规则。有关Spirent TestCenter自动化语法元素的详细讨论,请参阅API语法。

语法元素 使用方法
对象与属性引用 Spirent TestCenter自动化函数调用中的对象和属性引用是Python方法调用中的参数。在括号中的参数列表。参数用逗号分隔。例如:stc.create('port', under='project1', name='myport')
属性键–值对 1. 属性键–值对使用 = 操作符 2.属性名称不会在名称-值对中被引用 3.对于PythonAPI,破折号前缀( the dash prefix)不与属性名称一起使用。 stc.create('streamblock', under=port)
DAN引用 使用Descendant-Attribute Notation(DAN)的属性引用需要包含引号(并且不使用破折号前缀)。在下面的示例中,streamBlock.name是一个DAN属性引用:d = dict([('under', 'project1') , /('streamBlock.name''mystreamblock')] /stc.create('port', **d)
DDN引用 使用 Direct-Descendant Notation (DDN)的对象引用需要包含引号。例如 stc.get('project1.port')
handle 引用 Handle引用没有被引用。例如: portHandle = stc.create('port', under='project1') stc.get(portHandle)
对象类型名称 对象类型名称用引号括起来。例如:stc.create('project')stc.perform('GeneratorStart',generatorList=generator)
独立属性名称 属性名称(独立名称)用引号括起来。例如:stc.get(streamblockHandle, 'name')
关系引用 关系引用Spirent TestCenter 自动化语法中被视为属性。关系引用附在引号中。例如: stc.get(portHandle, 'children') 如果使用对象类型筛选器,请使用破折号分隔符。例如:stc.get(portHandle, 'children-generator')
建立关系 使用关键字参数格式(**kwargs)来指定关系及其值。例如 stc.config(Project_1,**{"DefaultSelection-targets": [FrameLengthDistribution_1]}) stc.config(Port_1,**{"AffiliationPort-sources": [EmulatedDevice_1,EmulatedDevice_3]})
整数 整数值没有被引号引用。例如:stc.sleep(10) stc.perform('devicecreate', parentList='project1',createCount=4) 请注意,组合后的值必须用引号括起来:stc.config(portHandle, location="//10.1.1.1/1/2")

Python API概要

以下提供了关Spirent TestCenter 自动化的PythonAPI的简要概述。

1. API函数概要

API函数概要
下表列出了API中的函数。对于每个函数,该表显示了方法调用参数列表的参数,包括返回值的类型
此表显示了每个函数的参数列表的抽象部分。有关这些函数的详细信息,请参见API函数。

函数 参数列表数据类型
create create(objectTypeString, attributeName=value [,...]) 返回值:HandleString
config config(handleString, attributeName=value [,...])返回值:none
get get(handleString) get(handleString, attributeName [,...])返回值:value or attribute name/value pairs
perform perform(commandNameString)perform(commandNameString,attribute Name=value [,...])
delete delete(handleString)
connect connect(hostNameString [,...])
disconnect disconnect(hostNameString [,...])
reserve reserve(//chassis/slot/port string [,...])
release release(//chassis/slot/port string [,...])
apply apply()
sleep sleep(numberSecondsInteger)
log log(logLevelString, messageString)
waitUntilComplete waitUntilComplete (timeout=numberSecondsInteger)
subscribe unsubscribe(resultDataSetHandleString)
help help()/help(‘commands’)/help(commandNameString)/help(handleString)/help(objectTypeString)

2. dict或string(返回值)

get 和 perform 函数可以返回属性名的dict(Python 标准库对象)。如果一个特定函数调用的结果是一个属性值,则该函数将返回一个 string。否则,该函数将返回一个 dict。
例如:

stc.get(port, ‘name’)

返回一个字符串

stc.get(port)

或者返回一个含有多个条目的dirt,如果一个属性有多个值,则dict值是一个包含由空格分隔的值的字符串。

Python示例

本主题中描述的示例使用 Spirent TestCenter 机箱上的两个端口,并创建的简单测试配置如下图所示:


Python 脚本将创建项目对象、两个端口对象和一个流线块对象 Spirent TestCenter 中心将自动创建生成器、分析器和结果对象;自动对象将显示为红色。以下部分描述了 Python 脚本的示例:
Initialization(初始化)
Chassis, Slot, and Port Variables(机箱,板卡,端口)
Project and Port Objects(项目,端口)
Traffi Configuration(流量配置)
Attaching Ports(连接端口)
Results Subscription(查看结果)
Traffic Generation(产生流量)
Termination(停止)

Initialization

每个 Spirent TestCente 自动化 Python 脚本必须加载Spirent TestCenter模块,才能使用API。下面的代码片段初始化了 Spirent TestCenter 自动化环境

from StcPython import StcPython #导入StcPython
stc = StcPython() #创建了一个StcPython的实例,并初始化了 Spirent TestCente 系统。该脚本将使用stc变量作为引用 Spirent TestCente 自动化功能的前缀

代码片段建立了对 Spirent TestCenter 自动化 Python API 的访问。

Chassis, Slot, and Port Variables

此代码片段声明一些变量,以标识要在测试中使用的机箱、板卡和端口。它还设置了日志记录。

chassisAddress = '10.100.20.60'
slot = 2
Python Example
p1 = 1
p2 = 2
print "using //%s/%s/%s" % (chassisAddress, slot, p1)
print "using //%s/%s/%s" % (chassisAddress, slot, p2)
#set up the log file
stc.config( 'automationoptions', loglevel='info', logto='mylog.txt' )

Project and Port Objects

下面的代码片段将创建项目对象和端口对象。项目对象是对象层次结构的根目录。端口对象表示 Spirent TestCenter 机箱上的端口。此代码创建对象,检索并显示项目属性,并指定端口位置。

print 'Create a Project - root'
project = stc.create('project')
print 'Get Project attributes'
projectAtt = stc.get(project, 'name')
print projectAtt
print 'Create Ports under', project
port1 = stc.create('port', under=project)
port2 = stc.create('port', under=project)
print 'Configure Port locations'
stc.config(port1, location="//%s/%s/%s" % (chassisAddress, slot, p1))
stc.config(port2, location="//%s/%s/%s" % (chassisAddress, slot, p2))

Traffic Configuration

此代码片段创建一个 StreamBlock 对象,并检索生成器和分析器对象的Handle。

print 'Creating StreamBlock on Port 1'
streamBlock = stc.create('streamBlock', under=port1 )
generator = stc.get(port1, 'children-generator')
analyzer = stc.get(port2, 'children-Analyzer')

Attaching Ports

此代码片段调用附件端口命令并应用该配置。附件端口可完成以下操作:

  1. 连接到机箱(使用在“端口对象位置”属性中指定的机箱IP地址)
  2. 预订端口
  3. 在机箱中创建物理端口与测试配置中的逻辑表示之间的映射。
  4. 您可以通过调用连接功能,然后使用保留端口和映射端口命令来分别执行这些操作;但是,附加端口命令的效率更高。
print 'Attaching Ports...'
stc.perform('AttachPorts', portList=[port1, port2], autoConnect='TRUE')
stc.apply()

Results Subscription

以下对 Subscribe 函数的调用为生成器结果和分析器结果建立Subscription。调用指定一个文件名前缀,以生成一个包含以逗号分隔的值的结果输出文件。有关详细信息,请参阅Subscriptions功能的描述和关于创建Subscriptions的信息。

print 'Call Subscribe...'
port1GeneratorResult = stc.subscribe(Parent=project,ResultParent=port1,ConfigType='Generator',resulttype='GeneratorPortResults',filenameprefix="Generator_port1_counter_%s" % port1,Interval=2 )
port2AnalyzerResult = stc.subscribe(Parent=project,ResultParent=port2,ConfigType='Analyzer',resulttype='AnalyzerPortResults',filenameprefix="Analyzer_port2_counte %s"%port1 )

Traffic Generation

以下代码片段:

print 'Starting Traffic...'
stc.perform('AnalyzerStart', analyzerList=analyzer)#启动分析器并等待允许足够的时间后再继续。
print 'start', analyzer
# wait for analyzer to start
stc.sleep(1)stc.perform('GeneratorStart', generatorList=generator)
print "start", generator #启动Generator。
# generate traffic for 5 seconds
print 'Sleep 5 seconds...'stc.sleep(5)
print 'Stopping Traffic...'
stc.perform('GeneratorStop', generatorList=generator)
stc.perform('AnalyzerStop', analyzerList=analyzer)
print 'stop', generator
print 'stop', analyzer#睡眠5(5)秒,然后停止Generator and Analyzer。print 'Call Unsubscribe...'
stc.unsubscribe(port2AnalyzerResult)
stc.unsubscribe(port1GeneratorResult)#取消subscriptions。

Termination

在测试结束时,脚本将释放端口,断开与机箱的连接,并删除项目对象以释放所有资源。下面的代码片段显示了您用于执行终止的函数调用。

print 'Call Disconnect...'
stc.disconnect(chassisAddress)
stc.delete(project)

以上 form https://support.spirent.com/

基于Python 实现 Spirent TestCenter 自动化相关推荐

  1. 基于python+selenium,实现自动化沙袋校园出入备案

    基于python+selenium,实现自动化出入校园报备 背景-饿肚子的胡思乱想 selenium的安装 程序实现和问题解决 没有解决的问题和改进方向 源代码 背景-饿肚子的胡思乱想 昨天考完试,我 ...

  2. 基于python + Appium的安卓自动化

    基于python + Appium的安卓自动化 最近要双11了,刷喵糖比较火,看到github上一个刷喵糖的项目testerzhang/taobaomiao.git,也成功跑起来了,顺便研究下了实现方 ...

  3. 基于python的压测工具_基于Python和SIPp的自动化压力测试系统设计和实现

    信斌 王桂花 摘要:首先,分析了现有测试系统的不足,之后,介绍了软件组成和运行环境说明,最后,设计了基于Python和SIPp的自动化压力测试系统,并给出了相关代码.新的测试系统克服了现有测试系统的不 ...

  4. pythonapp自动化_基于python的App UI自动化环境搭建

    Android端Ui 自动化环境搭建 一,安装JDK.SDK 二,添加环境变量 Widows: 1.系统变量→新建 JAVA_HOME 变量 E:\Java\jdk1.7.0 jdk安装目录 2.系统 ...

  5. python流程自动化_基于Python的SAP流程自动化

    财务的自我修养,微信公众号:机智出品(jizhjchupin),文中各类数据文件均可于公众号内下载 痛点:SAP部分业务操作重复化.规律化: 目标:无意义的重复无脑操作全部自动化: 工具:Python ...

  6. 接口测试用例设计思路_基于python语言的接口自动化demo小实战

    近期通过自己的学习以及实战,完成了一个关于测试接口的接口自动化demo. 下面想跟大家分享一下,主要的思路是根据接口文档确定测试用例,并将测试用例写在excel中. 01 因为只是小作demo,测试用 ...

  7. python连接sap接口_基于Python的SAP流程自动化

    财务的自我修养,微信公众号:机智出品(jizhjchupin),文中各类数据文件均可于公众号内下载 痛点:SAP部分业务操作重复化.规律化: 目标:无意义的重复无脑操作全部自动化: 工具:Python ...

  8. centos7配置不开启浏览器执行基于python+selenium的功能自动化脚本

    一)软件环境 python 3.7 selenium 3.11 geckodriver 0.21.0    //将其放置于/usr/bin目录下 firefox 62.0        //将其主目录 ...

  9. 基于python的网站_基于Python的网站爬虫应用研究

    基于 Python 的网站爬虫应用研究 陈清 [期刊名称] <通讯世界> [年 ( 卷 ), 期] 2020(027)001 [摘要] 如何于海量的互联网网站中获取有用资源信息 , 对网站 ...

  10. python自动化工具开发_初识TPOT:一个基于Python的自动化机器学习开发工具

    1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...

最新文章

  1. www服务器提供的第一个信息页面,第14章WWW服务
  2. jenkins 打包 命令
  3. 给ThinkPad E470C 换个高分屏(1080P)
  4. 11g crsctl start/stop crs 和 crsctl start/stop cluster 的关系
  5. MySQL事务控制语句
  6. php开发者大会报名,2017 PHP 全球开发者大会
  7. xdocument查找节点值_二叉查找树(java)
  8. MySQL的存储引擎InnoDB,B+Tree数据结构索引的实现原理图(聚簇索引/聚集索引)
  9. [Leetcode][第79题][JAVA][单词搜索][DFS][回溯]
  10. yolov5的flask部署python调用
  11. MySQL数据库SQL层级优化
  12. dubbo 自定义路由_爱奇艺在 Dubbo 生态下的微服务架构实践
  13. 电商网站攻防,三个制胜锦囊
  14. 基于SkyEye的覆盖率测试
  15. 五大最主流浏览器综合性能测试
  16. 曾经很火的迅雷,为什么现在不怎么火了?
  17. jquery 单选、复选赋值
  18. Android设计模式--之命令模式
  19. hrbusrt 1900 权限问题
  20. js获取网页元素文本

热门文章

  1. 这10个免费学习网站,个个堪称神器,不收后悔!
  2. 声明式导航与编程式导航
  3. 老年人大学计算机课程,老人学电脑(入门级)
  4. 系统崩溃,TCP协议栈
  5. 微信小程序反编译wxss文件缺失_微信小程序反编译 wxss 丢失问题
  6. 赵绍琴温病学讲座(一)
  7. python 图片文字提取
  8. 国庆节想吃想玩要不去这? 央视推荐——新疆独库公路
  9. 软件工程-什么是热重载,如何使用热重载?
  10. 圆角矩形大小怎么调整html,html圆角矩形