web自动化框架之四测试报告的搭建

现状:

看过前面的文章,楼主用的是python,所以在搭建测试报告这块的时候使用的是unittest+htmlTestRunner;然后发现生成出来的报告,总是有那么不完美的地方,比如想增加图片,比如显示风格改变下;然后尝试性的去修改了一个htmlTestRunner源码,虽然图片出来了,显示风格修改不了...so...萌生的弃意...

问题:

   1.unittest

      unittest当案例异常或脚本执行异常时,无法继续执行下个案例~,比如登录时,后台服务异常、登录用户无菜单权限异常、新增用户状态导致无法登录异常等等;

unittest.assertEqual、assertRaises等断言方法对复杂的功能逻辑难以处理~~,比如需要if/else、or、and组合用的逻辑判断。

   2.htmlTestrunner

 case测试数据输出信息不全,关键不能做一些炫酷的事,自动对接缺陷管理系统、自动验证缺陷(重点);

      历史数据信息无法保存;

      样式总有那么不满意的地方。

方案:

    a.结果验证、测试参数输出、测试参数输出自己封装;

    b.测试数据信息保存在mysql;

    c.界面,jsp读取mysql数据展示。  

技术实现:

   a.略,后面专题介绍

   b.数据库数据的插入与相关初始化

MySQLdb.py
 
#coding=utf-8
import MySQLdb
from com.iapppay.test.loginfo.loginfoobject import *
# reload(sys)
# reload(sys).setdefaultencoding('gbk')
 
# def printStr(**kwargs):
# return kwargs[0][3]
 
'''
runTime CREATE TABLE `runTime` (
`startTime` datetime DEFAULT NULL,
`endTime` datetime DEFAULT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
casedata CREATE TABLE `casedata` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`casedata` varchar(2000) DEFAULT NULL COMMENT '案例参数',
`caseinfo` varchar(2000) DEFAULT NULL COMMENT '案例输出信息',
`status` varchar(6) DEFAULT NULL COMMENT '验证结果',
`casebank` varchar(2000) DEFAULT NULL COMMENT '备注',
`casetime` datetime DEFAULT NULL COMMENT '执行时间',
`system` varchar(12) DEFAULT NULL COMMENT '系统',
`action` varchar(12) DEFAULT NULL COMMENT '功能',
`imageinfo` varchar(2000) DEFAULT NULL COMMENT '图片信息',
`caseR` int(11) DEFAULT NULL COMMENT '案例点',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1159 DEFAULT CHARSET=utf8;
'''
 
insert = "insert into `casedata` (`casedata`, `caseinfo`, `status`, `casebank`, `casetime`, `system`, `action`) values('sasdasd','sadasd','fase','sdasd',NULL,'admin','login','caseR');"
#访问数据库
try:
conn =MySQLdb.connect(host="192.168.0.157",port=3306,user="root",passwd="123456",db="webTest",charset="utf8") #v35test_iapppay,webTest
except MySQLdb.Error as e:
logging.ERROR(e)
pass
 
#插入数据公共方法
 
def insertData(str):
cursor = conn.cursor()
try:
cursor.execute(str)
conn.commit()
except Exception as e:
logging.ERROR(e)
pass
conn.close
 
 
 
insertData.py
 
#coding=utf-8
'''
Created on 2014��7��17��
@author: Ф肖彬
'''
import time
 
#获取当前时间
 
def dateTime():
return time.strftime('%Y-%m-%d %H:%S',time.localtime(time.time()))
 
#初始化生成insert sql
 
def data(casedata,caseinfo,status,casebank,casetime,system,action,imageinfo):
data ="insert into `casedata`(`casedata`, `caseinfo`, `status`, `casebank`, `casetime`, `system`, `action`,`imageinfo`)values('"+casedata+"','"+caseinfo+"','"+status+"','"+casebank+"','"+casetime+"','"+system+"','"+action+"','"+imageinfo+"');"
return data
 
#对特殊字符处理
 
def returnargs(*args):
data =""
for i in (range(len(args))):
data += str(args[i])
data = data.replace("'","\\'")
return str(data)
 
#初始化时间插入sql
 
 
 
def runtimeData(startTime,endTime):
data = "insert into runTime(startTime,endTime) values ('"+startTime+"','"+endTime+"');"
return data
 
3.jsp页面访问
 
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*" %>


<%
String par = request.getParameter("pay");
%>

 


爱贝自动化监控界面


 

爱贝自动化测试监控

Start Time: 2014-07-16 16:17:45

Duration: 0:00:00.027000

Status: pass 1 false 1 error 1

测试结果: Pass false Error All

<% Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con=java.sql.DriverManager.getConnection("jdbc:mysql://192.168.0.157/webTest?useUnicode=true&characterEncoding=utf-8","root","123456"); Statement stmt=con.createStatement(); ResultSet rst=stmt.executeQuery("select id,casedata,caseinfo,status,casebank,casetime,system,action,imageinfo from casedata order by id desc"); while(rst.next()) { out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); //out.println(""); out.println(""); out.println(""); } //关闭连接、释放资源 rst.close(); stmt.close(); con.close(); %>
ID 测试数据 测试输出 测试结果 测试备注 执行时间 系统 action 图片
"+rst.getString("id")+""+rst.getString("casedata")+""+rst.getString("caseinfo")+""+rst.getString("status")+""+rst.getString("casebank")+""+rst.getString("casetime")+""+rst.getString("system")+""+rst.getString("action")+""+rst.getString("imageinfo")+""+""+""+"

 

注意:需要导入com.mysql.jdbc.Driver lib包

最后:到这里,一套测试报告搭建完毕,最后是往数据表里面插入测试的相关数据就哦了

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
web自动化框架之四测试报告的搭建_第1张图片

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

你可能感兴趣的:(单元测试,测试用例,测试工具,功能测试,selenium,postman,jmeter)