python生成xml测量试验报告【龙8国际long88】,发送
分类:long8

2.压缩文件夹及文件代码:

 

# 存储数据时可设置优先级的队列
# 优先级设置数越小等级越高
pq = PriorityQueue(maxsize=0)

#写入队列,设置优先级
pq.put((9,'a'))
pq.put((7,'c'))
pq.put((1,'d'))

#输出队例全部数据
print(pq.queue)

#取队例数据,可以看到,是按优先级取的。
pq.get()
pq.get()
print(pq.queue)

#输出:
[(9, 'a')]

返回值

万一含有子字符串再次来到初阶的索引值,否则重临-1。

 生成xml具体python代码:

 

不前进,不倒退,停止的情形是绝非的.

Queue 先进先出队列:

参数

  • str -- 钦点检索的字符串
  • beg -- 初阶索引,暗中认可为0。
  • end -- 截至索引,默以为字符串的尺寸。

创建的xml第一行是xml头    <?xml version="1.0" encoding="utf-8"?> 那样python默许已经有了,就绝不大家创造了,那么

EMAIL效能完结:

那样的话,想想是不是用途比很多,小编得以把艺术名配置到文件中,读取时采纳getattr动态去调用。

#基本FIFO队列  先进先出 FIFO即First in First Out,先进先出
#maxsize设置队列中,数据上限,小于或等于0则不限制,容器中大于这个数则阻塞,直到队列中的数据被消掉
q = Queue(maxsize=0)

#写入队列数据
q.put(0)
q.put(1)
q.put(2)

#输出当前队列所有数据
print(q.queue)
#删除队列数据,并返回该数据
q.get()
#输也所有队列数据
print(q.queue)

# 输出:
# deque([0, 1, 2])
# deque([1, 2])

python生成xml测量试验报告【龙8国际long88】,发送email邮件带附属类小部件。语法

find()方英语法:

str.find(str, beg=0, end=len(string))

 

REPORT/LOG_ENTRY

3.配备文件config.yaml

#coding=utf-8

class pyMethod(object):
    def outstr(self):
        print('this is string')

    def outint(self):
        print('this is number')

    def outdate(self):
        print('this is date')


if __name__=="__main__":
    str = 'int'
    getattr(pyMethod(),'out%s'%str)()     
    str = 'str'
    getattr(pyMethod(),'out%s'%str)()
    str = 'date'
    getattr(pyMethod(),'out%s'%str)()

作用:

实例

以下实例体现了find()方法的实例:

#!/usr/bin/python3

str1 = "Runoob example....wow!!!"
str2 = "exam";

print (str1.find(str2))
print (str1.find(str2, 5))
print (str1.find(str2, 10))

 

以上实例输出结果如下:

7
7
-1

实例

>>>info = 'abca'
>>> print(info.find('a'))      # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
0
>>> print(info.find('a', 1))   # 从下标1开始,查找在字符串里第一个出现的子串:返回结果3
3
>>> print(info.find('3'))      # 查找不到返回-1
-1
>>>

 

#*_*coding:utf-8*_*

import xml.dom.minidom as xmlDoc
import os
import gl
import sys



class cREPORTXML(object):
    def __init__(self):
        self.__struct = self.createReportNode()

    #创建report节点
    def createReportNode(self):
        try:
            xmlD = xmlDoc.Document()

            #xml样式
            xlstNode = xmlD.createProcessingInstruction("xml-stylesheet","href="LOG.XSLT" type="text/xsl"")
            xmlD.appendChild(xlstNode)

            report = xmlD.createElement('REPORT')
            xmlD.appendChild(report)

            overStatus = xmlD.createElement('OVER_STATUS')
            overStatus.appendChild(xmlD.createTextNode('PASSED'))
            report.appendChild(overStatus)

            returnResult = []
            returnResult.append(xmlD)
            returnResult.append(report)
        except Exception,ex:
            return ex.message
        return returnResult


    def writeReport(self,execTime,stepResult,comName,stepDisc):
        #reportNodeList = self.createReportNode()

        entry = self.createLogEntry(self.__struct[0],execTime,stepResult,comName,stepDisc)
        self.__struct[1].appendChild(entry)
        self.writeXml(self.__struct[0],gl.reporterPath+'reportxml.xml')
        #self.writeXml(self.__struct[0],gl.reporterPath+'reportxml_%s.xml'%(gl.curTimeStr))
 #-------------创建xml格式-有多个相同的节点,并且该节点下有4个名称相同的子节点----------------
    def createLogEntry(self,docObj,executeTime,stepResult,componentName,stepDiscription):
        entry = docObj.createElement("LOG_ENTRY")

        status = docObj.createElement("STATUS")
        nodeExecuteTime = docObj.createElement("EXECUTION_TIME")
        nodeStepResult = docObj.createElement("STEP_RESULT")
        nodeComponentName = docObj.createElement("COMPONENT_NAME")
        nodeStepDiscription = docObj.createElement("STEP_DESCRIPTION")

        status.appendChild(docObj.createTextNode(stepResult))
        nodeExecuteTime.appendChild(docObj.createTextNode(executeTime))
        nodeStepResult.appendChild(docObj.createTextNode(stepResult))
        nodeComponentName.appendChild(docObj.createTextNode(componentName))
        nodeStepDiscription.appendChild(docObj.createTextNode(stepDiscription))

        entry.appendChild(status)
        entry.appendChild(nodeExecuteTime)
        entry.appendChild(nodeStepResult)
        entry.appendChild(nodeComponentName)
        entry.appendChild(nodeStepDiscription)
        return entry


    #参数,xml对象,准备存储xml文件路径,文件模式:读 and 写 (r and w)
    def writeXml(self,xmlDoc,xmlPath):
        f = open(xmlPath,"w")
        xmlDoc.writexml(f,indent='t', addindent='t', newl='n', encoding="utf-8") #中间的加了一些格式符,这样生成的xml自动对齐格式
        f.close()




if __name__=='__main__':
    reportx =cREPORTXML()
    print  reportx.writeReport('20170602','PASSED','1-SETTEXT','AUTOMATION TEST')
    print  reportx.writeReport('20170606','FIELD','2-SETTEXT','AUTOMATION TEST')

 

 

   解耦:使程序直接促成松耦合,修改一个函数,不会有串联关系。

描述

find() 方法检查实验字符串中是或不是含有子字符串 str ,假设钦点 beg(初叶) 和 end(截至) 范围,则检查是还是不是包括在钦定范围内,即便钦点范围内假若含有指定索引值,重返的是索引值在字符串中的起始地点。假使不富含索引值,再次回到-1。

1.行使xslt样式,那样可以很好的和xml结合,做出能够的告诉

    Smtp_Server: smtp.exmail.qq.com
    Smtp_Sender: xxxx@163.com
    Password: xxxxxx
    Msg_Title: UI自动化测试结果
    Receivers: ['xxxx@126.com']  #收件人
    From: 自动化测试系统
    To: 测试组
 getattr(pyMethod(),'out%s'%str)()  注意pyMethod()和最后的()   这里之所以这么写pyMethod()加括号是实例化类对象,最后的括号,因为getattr函数反射后,是一个方法对象。

 

EXECUTION_TIME施行时间

 

getattr()那一个措施最关键的法力是兑现行反革命射机制。也即是说能够通过字符串获取格局实例。  传入不相同的字符串,调用的方式分裂。

 

4.之后创建另外节点,同样用createElement,不过一旦节点下要加进内容要用xmlDoc.createTextNode('passed')

#_*_coding:utf-8_*_

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.header import Header
from email import encoders
import time
import yaml,os,base64
from pos.lib import gl,scripts


class EmailClass(object):
    def __init__(self):
        self.curDateTime = str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())) #当前日期时间
        self.config = scripts.getYamlfield(gl.configFile) #配置文件路径
        self.sender = self.config['EMAIL']['Smtp_Sender'] # 从配置文件获取,发件人
        self.receivers = self.config['EMAIL']['Receivers']  # 从配置文件获取,接收人
        self.msg_title = self.config['EMAIL']['Msg_Title'] #从配置文件获取,邮件标题
        self.sender_server = self.config['EMAIL']['Smtp_Server'] #从配置文件获取,发送服务器
        self.From = self.config['EMAIL']['From']
        self.To = self.config['EMAIL']['To']

    '''
    配置邮件内容
    '''
    @property
    def setMailContent(self):
        print self.receivers
        msg = MIMEMultipart()
        msg['From'] = Header(self.From,'utf-8')
        msg['To'] = self.To
        msg['Subject'] = Header('%s%s'%(self.msg_title,self.curDateTime),'utf-8')

        #附件路径
        dirpath = gl.reportPath
        zipfile = os.path.join(os.path.dirname(dirpath), 'report.zip')
        reportfile = os.path.join(gl.reportPath, 'Report.html')
        scripts.zipDir(dirpath,zipfile) #压缩报告
        #增加邮件内容为html
        fp = open(reportfile, 'rb')
        reportHtmlText = fp.read()
        msg.attach(MIMEText(reportHtmlText,'html','utf-8'))
        fp.close()

        #增加附件
        html = self.addAttach(zipfile,filename='Report%s.zip'%self.curDateTime) #自动化测试报告附件
        msg.attach(html)

        return msg


    '''
    增加附件
    '''
    def addAttach(self,apath,filename='Report.html'):
        with open(apath, 'rb') as fp:
            attach = MIMEBase('application','octet-stream')
            attach.set_payload(fp.read())
            attach.add_header('Content-Disposition', 'attachment', filename=filename)
            encoders.encode_base64(attach)
            fp.close()
            return attach


    '''
    发送电子邮件
    '''
    def sendEmail(self,message):
        try:
            smtpObj = smtplib.SMTP()
            smtpObj.connect(self.sender_server,25)
            smtpObj.login(self.sender,self.config['EMAIL']['Password'])
            smtpObj.sendmail(self.sender,self.receivers , message.as_string())
            smtpObj.quit()
            print "邮件发送成功"
        except smtplib.SMTPException as ex:
            print "Error: 无法发送邮件.%s"%ex

    #发送调用
    @property
    def send(self):
        self.sendEmail(self.setMailContent)

if __name__=="__main__":
    EmailClass().send

Linux and python学习交换1,2群已满.

 

 

1.发送EMAIL带附属类小部件,并且带压缩文件夹做为附属类小部件

pyMethod类下定义了八个主意,getattr(pyMethod(),'out%s'%str)()   传入的秘技名分裂,调用区别的章程。些处方法名叫字符串。

Python queue队列

            overStatus = xmlD.createElement('OVER_STATUS')
            overStatus.appendChild(xmlD.createTextNode('PASSED'))
            report.appendChild(overStatus)
def zipDir(dirpath,outFullName):
    """
    压缩指定文件夹
    :param dirpath: 目标文件夹路径
    :param outFullName: 压缩文件保存路径+xxxx.zip
    :return: 无
    """
    zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED)
    for path,dirnames,filenames in os.walk(dirpath):
        # 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
        fpath = path.replace(dirpath,'')

        for filename in filenames:
            zip.write(os.path.join(path,filename),os.path.join(fpath,filename))
    zip.close()

一同前进,与君共勉,

 

其余累计的行放在了节点LOG_ENT锐界Y下,四个根节点下可以有四个LOG_ENTRY节点........一个LOG_ENTEnclaveY节点代码一行数据实践结果

 

Linux and python学习交换3群新开,应接参与,一齐学习.qq 3群:563227894

#双边队列
dq = deque(['a','b'])

#增加数据到队尾
dq.append('c')
#增加数据到队左
dq.appendleft('d')

#输出队列所有数据
print(dq)
#移除队尾,并返回
print(dq.pop())
#移除队左,并返回
print(dq.popleft())
#输出:
deque(['d', 'a', 'b', 'c'])
c
d

上面上,生成xml的python代码,那几个创造xml结构就非常粗大略了.

本文由long8发布于long8,转载请注明出处:python生成xml测量试验报告【龙8国际long88】,发送

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文