python转化rebot的测试报告

#!/usr/bin/env python# -*- coding: utf-8 -*-

import os,sys,timefrom selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.common.keys import Keys

class get_Trandlation(object):    def __int__(self,report_path):        self.report_path=report_path    def get_tran(self,report_path):        browser = webdriver.Chrome()        browser.get(report_path)        detailContent=browser.find_element_by_xpath("//table[@class=‘details‘]").text        totalContent=browser.find_element_by_id("total-stats").text        TagContent=browser.find_element_by_id("tag-stats").text        SuiteContent=browser.find_element_by_id("suite-stats").text        total=browser.find_element_by_xpath("//*[@id=‘total-stats‘]/tbody/tr[1]/td[2]").text        pass_t=browser.find_element_by_xpath("//*[@id=‘total-stats‘]/tbody/tr[1]/td[3]").text        details=‘%.2f%%‘ % (int(pass_t)/int(total)*100)        return  detailContent,totalContent,TagContent,SuiteContent,total,pass_t,detailsclass createReport(get_Trandlation):    def __init__(self,report_path,reportSavePath):        self.report_path=report_path        s=self.get_tran(report_path)        print s[0]  ,s[6]        detailContent=s[0]        totalContent=s[1]        TagContent=s[2]        SuiteContent=s[3]        total=s[4]        pass_t=s[5]        details=s[6]        self.detailContent=detailContent        self.totalContent=totalContent        self.TagContent=TagContent        self.bySuiteContent=SuiteContent        self.total=total        self.pass_t=pass_t        self.percentage=details        self.percentage=reportSavePath    def createReportContent(self,report_path,reportSavePath):            result=self.detailContent.split("\n")            sDetail=‘‘            for index in range(len(result)):                if(index!=len(result)):                    sDetail=sDetail+result[index]+"<br>"                else:                    sDetail=sDetail+result[index]            print result            print type(result)            print len(result)            detailTable="<font size=‘5‘ style=‘font-weight:bold‘>Summary Information</font><br><table width=‘1000‘ border=‘1‘ cellpadding=‘1‘ cellspacing=‘1‘><tr><td width=‘100%‘>"+‘Run Pass Rate: ‘+self.percentage+"</td></tr><tr><td width=‘100%‘>"+sDetail+"</td></tr></table>"

totalTable="<table width=‘1000‘ border=‘1‘ cellpadding=‘1‘ cellspacing=‘1‘><tr bgcolor=‘#DCDCDC‘><td width=‘40%‘‘>Total Statistics</td><td>Total</td><td>Pass</td><td>Fail</td><td>Elapsed</td><td>Pass/Fail</td></tr>"            result=self.totalContent.split("\n")            del result[0]            del result[0]            del result[0]            del result[0]            del result[0]            del result[0]            for index in range(len(result)):                if((index+1)%2==1):                    totalTable=totalTable+"<tr><td>"+result[index]+"</td>"                else:                    s=result[index]                    items=s.split(" ")                    for item in items:                        totalTable=totalTable+"<td>"+item+"</td>"                    sColor="";                    if(items[2]=="0"):                        sColor="green"                    else:                        sColor="red"                    totalTable=totalTable+"<td><center><font style=‘font-weight:bold;color:green‘>"+items[1]+"/</font><font style=‘font-weight:bold;color:"+sColor+"‘>"+items[2]+"</font></center></td></tr>"            totalTable=totalTable+"</table>"            byTagTable="<table width=‘1000‘ border=‘1‘ cellpadding=‘1‘ cellspacing=‘1‘><tr bgcolor=‘#DCDCDC‘><td width=‘40%‘>Statistics by Tag</td><td>Total</td><td>Pass</td><td>Fail</td><td>Elapsed</td><td>Pass/Fail</td></tr>"            result=self.byTagContent.split("\n")            del result[0]            del result[0]            del result[0]            del result[0]            del result[0]            del result[0]            for index in range(len(result)):                if((index+1)%2==1):                    byTagTable=byTagTable+"<tr><td>"+result[index]+"</td>"                else:                    s=result[index]                    items=s.split(" ")                    for item in items:                        byTagTable=byTagTable+"<td>"+item+"</td>"                    sColor="";                    if(items[2]=="0"):                        sColor="green"                    else:                        sColor="red"                    byTagTable=byTagTable+"<td><center><font style=‘font-weight:bold;color:green‘>"+items[1]+"/</font><font style=‘font-weight:bold;color:"+sColor+"‘>"+items[2]+"</font></center></td></tr>"            byTagTable=byTagTable+"</table>"            bySuiteTable="<table width=‘1000‘ border=‘1‘ cellpadding=‘1‘ cellspacing=‘1‘><tr bgcolor=‘#DCDCDC‘><td width=‘40%‘>Statistics by Suite</td><td>Total</td><td>Pass</td><td>Fail</td><td>Elapsed</td><td>Pass/Fail</td></tr>"            result=self.bySuiteContent.split("\n")            del result[0]            del result[0]            del result[0]            del result[0]            del result[0]            del result[0]            for index in range(len(result)):                if((index+1)%2==1):                    bySuiteTable=bySuiteTable+"<tr><td>"+result[index]+"</td>"                else:                    s=result[index]                    items=s.split(" ")                    for item in items:                        bySuiteTable=bySuiteTable+"<td>"+item+"</td>"                    sColor="";                    if(items[2]=="0"):                        sColor="green"                    else:                        sColor="red"                    bySuiteTable=bySuiteTable+"<td><center><font style=‘font-weight:bold;color:green‘>"+items[1]+"/</font><font style=‘font-weight:bold;color:"+sColor+"‘>"+items[2]+"</font></center></td></tr>"            bySuiteTable=bySuiteTable+"</table>"            html="<html> <head><title></title><meta http-equiv=‘Content-Type‘ content=‘text/html; charset=utf-8‘ /></head><body>"+detailTable+"<font size=‘5‘ style=‘font-weight:bold;‘>Test Statistics</font>"+totalTable+"<br>"+byTagTable+"<br>"+bySuiteTable+"<br><font size=‘5‘ style=‘font-weight:bold;‘>更多详情请查看邮件附件【report.html】和【log.html】!!!</font></body></html>"            print html            read = open(reportSavePath,‘w‘)            read.write(html)            read.closeif __name__==‘__main__‘:    s=createReport("F:\\jekens\\workspace\\auto_test_regression\\default\\report.html","d:report_1.html")    s.createReportContent("F:\\jekens\\workspace\\auto_test_regression\\default\\report.html","d:report_1.html")
时间: 2024-10-03 23:13:52

python转化rebot的测试报告的相关文章

Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一.导入HTMLTestRunner 1.这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html 2.Download下HTMLTestRunner.py文件就是我们需

python实例编写(7)---测试报告与测试套件(多个py文件,1个py文件内多个用例)

一.  一个.py文件批量执行测试用例(一个.py文件下多个用例执行) 如果直接使用:unittest.main(),则按字母顺序执行, 对于前后之间又依赖关系的用例,需要按特定的顺序执行,则使用 suite.addTest(类名("方法名")),如这里按照新增,修改,删除的顺序,可以避免执行完毕后的测试数据处理. def test_modifyCategory(self): ... def test_addCategory(self): ... def test_delCategor

Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一.导入HTMLTestRunner 1.这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址:http://tungwaiyip.inf

Python自动化测试框架——生成测试报告

如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢? 小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前,我们需要下载HTMLTestRunner.py文件 点击HTMLTestRunner后进入的是一个写满代码的网页,小编推荐操作:右键 --> 另存为,文件名称千万不要改 python3使用上述HTMLTestRunner可能会报错,可以替换如下文件 """ A TestRunner for use with the P

Selenium(Python)生成Html测试报告

由于Python3已经不支持HTMLTestRunner了, 无论是PyCharm还是pip都无法安装成功, 所以只能去https://pypi.python.org/pypi/HTMLTestRunner手动下载了, 把HTMLTestRunner.py文件放到Python3安装目录下的Lib文件夹里面: 还有一个地方需要注意的是, Python3已经不支持file方法了, 应该用open! 好多坑...... 新建TestCase.py: import unittestfrom time i

Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件

一下代码是自己结合教材,并结合以往用到的实例编写的代码,可以做为参考 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from HTMLTestRunner import HTMLTestRunner from email.header import Header import unittest import time,os #==========

Appium+Python之生成html测试报告

思考:测试用例执行后,如何生成一个直观漂亮的测试报告呢? 分析:1.unittest单元测试框架本身带有一个textTestRunner类,可以生成txt文本格式的测试报告,但是页面不够直观 2.我们可以导入第三方库,比如常用的HTMLTestRunner类,可以生成html格式测试报告 3.首先去下载HTMLTestRunner_PY3.py脚本(我这里采用Python3.7),然后放置在Python3.7路径下的Lib目录下,使用时需要导入(即import  HTMLTestRunner_P

我的Python成长之路---第三天---Python基础(12)---2016年1月16日(雾霾)

四.函数 日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现.在编程的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代码调用. 假设我们在编程过程中需要计算圆形的面积.如果我们不是用函数,每次需要计算原型面积的时候都需要这样 1 r1 = 12.34 2 r2 = 9.08 3 r3 = 73.1 4 s1 = 3.14 * r1 * r1 5 s2 = 3.14 * r2 * r2 6 s3 = 3.14 * r

玩蛇(Python)笔记之基础Part3

玩蛇(Python)笔记之基础Part1 一.集合 1.set 无序,不重复序列 {}创建,直接写元素 2.set功能 __init__()构造方法,,使用强制转换就会调用此方法 1 set1 = {'year', 'jiujiujiu'} 2 print(type(set1)) 3 # 创建集合 4 s = set() # 创建空集合 5 li = [11, 22, 11, 22] 6 s = set(li) set 3.集合的基本操作 1 # 操作集合 2 s1 = set() 3 s1.a