1.Spirent TestCenter 自动化提供了一个基于Python语言的API。有关受支持的Python软件和操作系统版本的信息,请参见Spirent TestCenter基础和测试包的发布说明。
2.Python语言API支持标准的 API 函数集和标准的 Spirent TestCenter 数据模型。主要描述了Python API语法,提供了该API的简要概要,并描述了如何使用Python API 创建和运行 Spirent TestCenter 自动化测试的示例。
- .Python 环境中的 API 语法
- .Python API概要
- .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 StcPython
stc = 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") |
以下提供了关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) |
| – | – |
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(停止)
每个 Spirent TestCente 自动化 Python 脚本必须加载螺旋测试中心模块,才能使用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
此代码片段调用附件端口命令并应用该配置。附件端口可完成以下操作:
- 连接到机箱(使用在“端口对象位置”属性中指定的机箱IP地址)
- 预订端口
- 在机箱中创建物理端口与测试配置中的逻辑表示之间的映射。
- 您可以通过调用连接功能,然后使用保留端口和映射端口命令来分别执行这些操作;但是,附加端口命令的效率更高。
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/



