如何在Robot框架中传递命令行参数以使其可用于所有库?

2024-06-03 01:37:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为我的特性测试开发了一些robot框架库,因为这些库的所有变量都来自variables.py文件。下面是variables.py的代码块:

#!/usr/bin/env python

import sys
import os
import optparse
import HostProperties
import xml.etree.ElementTree as ET
from robot.api import logger

testBed = 748
tree = ET.parse('/home/p6mishra/mybkp/testLibs/TestBedProperties.xml')

class raftGetTestBedProp(object):
  def GetTestBedNumber(self):
    _attributeDict = {}
    root = tree.getroot()
    for _tbProperties in root:
        for _tbNumber in _tbProperties:
            get_tb = _tbNumber.attrib
            if get_tb['name']== str(testBed):
                get_tb2 = _tbNumber.attrib
                return root, get_tb2['name']


  def GetTestBedProperties(self, root, testBedNumber):
    propertyList = []
    for _tbProperties in root:
        get_tb = _tbProperties.attrib
        for _tbProperty in _tbProperties:
            get_tb1 = _tbProperty.attrib
            if get_tb1['name']== str(testBedNumber):
              for _tbPropertyVal in _tbProperty:
                get_tb2 = _tbPropertyVal.attrib
                if 'name' in get_tb2.keys():
                    propertyList.append(get_tb2['name'])
    return propertyList


  def GetIPNodeType(self, root, testBedNumber):
    for tbNumber1 in root.findall('tbproperties'):
      for tbNumber in tbNumber1:
        ipv4support = tbNumber.find('ipv4support').text
        ipv6support = tbNumber.find('ipv6support').text
        lbSetup = tbNumber.find('lbSetup').text
        name = tbNumber.get('name')
        if name==str(testBedNumber):
            return ipv4support, ipv6support, lbSetup



obj1, obj2 = raftGetTestBedProp().GetTestBedNumber()
ipv4support, ipv6support, lbSetup = raftGetTestBedProp().GetIPNodeType(obj1, obj2)
AlltestBedProperties = raftGetTestBedProp().GetTestBedProperties(obj1, obj2)

HostPropertyDict = {}
for testBedProperty in AlltestBedProperties:
    try:
        val1 = getattr(HostProperties, testBedProperty)
        HostPropertyDict[testBedProperty] = val1
    except:
        logger.write("Error in the Configuration data. Please correct and then proceed with the testing", 'ERROR')


for indexVal in range(len(AlltestBedProperties)):
    temp  = AlltestBedProperties[indexVal]
    globals()[temp] = HostPropertyDict[temp]

此variables.py文件根据测试床编号返回HostProperties.py文件中定义的所有变量。 如果我像from variables import *那样在其他库中导入这个库,它会给我所需的变量。

但问题是这里我已经硬涂了748,所以它对我来说很好,但是我想把这个测试台号信息从pybot command传过来,让它可以用于我的机器人测试用例以及所有开发的库。


Tags: nameinpyimportforgetifroot