使用Python读取TestTrack记录- Part2

忙着写培训文档,今天只解决了read xml via pathon,明天七点起床去公司把export module解决完,开始集成计算模块,记录一下今天的completed task:

1. read xml via ElementTree

<?xml version="1.0" encoding="utf-8"?>
<TestTrackData>
  <Server>http://10.7.88.11/ttsoapcgi.wsdl</Server>
  <User>administrator</User>
  <Password></Password>
  <ExportFile>D:\TTDefectExport.xml</ExportFile>
</TestTrackData>

使用python编写代码:

from xml.etree import ElementTree
def ReadXMLNode(configFile, nodePath):
    root = ElementTree()
    root = ElementTree.Parse(configFile)
    node = root.find(nodePath)
    return node.text

if __name__ == '__main__':
    config = r"D:\Config.xml"
    serverPath = ReadXMLNode(config, "Server")
    userPath = ReadXMLNode(config, "User")
    pswPath = ReadXMLNode(config, "Password")
    exportPath = ReadXMLNode(config, "ExportFile")

尝试下dom来操作xml:create xml file via dom

def ReadXMLNode(configFile, nodePath):
    tree = ElementTree()
    root = tree.Parse(configFile)
    node = root.find(nodePath)
    return node.text
if __name__ == '__main__':
    config = r"D:\Config.xml"
    server = ReadXMLNode(config, "Server")
    user = ReadXMLNode(config, "User")
    psw = ReadXMLNode(config, "Password")
    if psw == None:
        psw = ''
    export = ReadXMLNode(config, "ExportFile")
#create a connection to TT server
server = suds.client.Client(server)
doc = Document()
root = doc.createElement("TestTrackData")

#login
cookie = server.service.DatabaseLogon(database_name, user, psw)
try:
    #fetch all the defect
    rows = server.service.getRecordListForTable(cookie, "Defect")
    for record in rows.Records:
        # fectch specific defect using given defect number
        defect = server.service.getDefect(cookie, record[0].value, bDownloadAttachments=False)
        defectNode = doc.createElement("Defect")
        if defect.__dict__.hasKey("recordid"):
            recordid = defect.__dict__["recordid"]
            # recordid
            recordidNode = doc.createElement("record-id")
            recordidNodeText = doc.createTextNode(recordid)
            recordidNode.appendChild(recordidNodeText)
            defectNode.appendChild(recordidNode)
        if defect.__dict__.hasKey("summary"):
            summary = defect.__dict__["summary"]
            #summary
            summaryNode = doc.createElement("summary")
            summaryNodeText = doc.createTextNode(recordid)
            summaryNode.appendChild(summaryNodeText)
            defectNode.appendChild(summaryNode)        
doc.appendChild(root)
try:
    f = open('bookstore.xml','w')
    content = re.sub(r'(<[^/][^<>]*[^/]>)\s*([^<>]{,40}?)\s*(</[^<>]*>)', r'\1\2\3', doc.toprettyxml(indent = ''))
    f.write(content)
finally:
    f.close()
except:

finally:
    response = server.service.DatabaseLogoff(cookie)




生成的xml可能没法自动换行,可能是以下样子

<catalog>
  <maxid>
  4
  </maxid>
</catalog>

可以用正则表达式来去掉多余\t

content = re.sub(r'(<[^/][^<>]*[^/]>)\s*([^<>]{,40}?)\s*(</[^<>]*>)', r'\1\2\3', doc.toprettyxml(indent = ''))



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值