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

慈云数据 2024-03-15 技术支持 57 0
现状:

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

问题:

   1.unittest

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

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

   2.htmlTestrunner

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

      历史数据信息无法保存;

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

方案:

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

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

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

技术实现:

   a.略,后面专题介绍

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

 
  1. MySQLdb.py

  2. #coding=utf-8

  3. import MySQLdb

  4. from com.iapppay.test.loginfo.loginfoobject import *

  5. # reload(sys)

  6. # reload(sys).setdefaultencoding('gbk')

  7. # def printStr(**kwargs):

  8. # return kwargs[0][3]

  9. '''

  10. runTime CREATE TABLE `runTime` (

  11. `startTime` datetime DEFAULT NULL,

  12. `endTime` datetime DEFAULT NULL,

  13. `id` int(11) NOT NULL AUTO_INCREMENT,

  14. PRIMARY KEY (`id`)

  15. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

  16. casedata CREATE TABLE `casedata` (

  17. `id` int(11) NOT NULL AUTO_INCREMENT,

  18. `casedata` varchar(2000) DEFAULT NULL COMMENT '案例参数',

  19. `caseinfo` varchar(2000) DEFAULT NULL COMMENT '案例输出信息',

  20. `status` varchar(6) DEFAULT NULL COMMENT '验证结果',

  21. `casebank` varchar(2000) DEFAULT NULL COMMENT '备注',

  22. `casetime` datetime DEFAULT NULL COMMENT '执行时间',

  23. `system` varchar(12) DEFAULT NULL COMMENT '系统',

  24. `action` varchar(12) DEFAULT NULL COMMENT '功能',

  25. `imageinfo` varchar(2000) DEFAULT NULL COMMENT '图片信息',

  26. `caseR` int(11) DEFAULT NULL COMMENT '案例点',

  27. PRIMARY KEY (`id`)

  28. ) ENGINE=InnoDB AUTO_INCREMENT=1159 DEFAULT CHARSET=utf8;

  29. '''

  30. insert = "insert into `casedata` (`casedata`, `caseinfo`, `status`, `casebank`, `casetime`, `system`, `action`) values('sasdasd','sadasd','fase','sdasd',NULL,'admin','login','caseR');"

  31. #访问数据库

  32. try:

  33. conn =MySQLdb.connect(host="192.168.0.157",port=3306,user="root",passwd="123456",db="webTest",charset="utf8") #v35test_iapppay,webTest

  34. except MySQLdb.Error as e:

  35. logging.ERROR(e)

  36. pass

  37. #插入数据公共方法

  38. def insertData(str):

  39. cursor = conn.cursor()

  40. try:

  41. cursor.execute(str)

  42. conn.commit()

  43. except Exception as e:

  44. logging.ERROR(e)

  45. pass

  46. conn.close

  47. insertData.py

  48. #coding=utf-8

  49. '''

  50. Created on 2014��7��17��

  51. @author: Ф肖彬

  52. '''

  53. import time

  54. #获取当前时间

  55. def dateTime():

  56. return time.strftime('%Y-%m-%d %H:%S',time.localtime(time.time()))

  57. #初始化生成insert sql

  58. def data(casedata,caseinfo,status,casebank,casetime,system,action,imageinfo):

  59. data ="insert into `casedata`(`casedata`, `caseinfo`, `status`, `casebank`, `casetime`, `system`, `action`,`imageinfo`)values('"https://blog.csdn.net/2401_83014899/article/details/+casedatahttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+caseinfohttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+statushttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+casebankhttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+casetimehttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+systemhttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+actionhttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+imageinfohttps://blog.csdn.net/2401_83014899/article/details/+"');"

  60. return data

  61. #对特殊字符处理

  62. def returnargs(*args):

  63. data =""

  64. for i in (range(len(args))):

  65. data https://blog.csdn.net/2401_83014899/article/details/+= str(args[i])

  66. data = data.replace("'","\\'")

  67. return str(data)

  68. #初始化时间插入sql

  69. def runtimeData(startTime,endTime):

  70. data = "insert into runTime(startTime,endTime) values ('"https://blog.csdn.net/2401_83014899/article/details/+startTimehttps://blog.csdn.net/2401_83014899/article/details/+"','"https://blog.csdn.net/2401_83014899/article/details/+endTimehttps://blog.csdn.net/2401_83014899/article/details/+"');"

  71. return data

  72. 3.jsp页面访问

  73. body { font-family: verdana, arial, helvetica, sans-serif; font-size: 80%; }

  74. table { font-size: 100%; }

  75. pre { }

  76. /* -- heading ---------------------------------------------------------------------- */

  77. h1 {

  78. font-size: 16pt;

  79. color: gray;

  80. }

  81. .heading {

  82. margin-top: 0ex;

  83. margin-bottom: 1ex;

  84. }

  85. .heading .attribute {

  86. margin-top: 1ex;

  87. margin-bottom: 0;

  88. }

  89. .heading .description {

  90. margin-top: 4ex;

  91. margin-bottom: 6ex;

  92. }

  93. .overflow{

  94. overflow:auto;

  95. }

  96. #show_detail_line {

  97. margin-top: 3ex;

  98. margin-bottom: 1ex;

  99. }

  100. 爱贝自动化监控界面

  101. alert();

  102. /* level - 0:pass; 1:false; 2:error 3:all */

  103. function showCase(level){

  104. if (level == 0){

  105. par = "hello1";

  106. alert();

  107. }

  108. if (level == 1){

  109. par = "hello2";

  110. alert();

  111. }

  112. if (level == 2){

  113. par = "hello3";

  114. alert();

  115. }

  116. if (level == 3){

  117. par = "hello4";

  118. alert();

  119. }

  120. }

  121. 爱贝自动化测试监控

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

  123. Duration: 0:00:00.027000

  124. Status: pass 1 false 1 error 1

  125. 测试结果:

  126. Pass

  127. false

  128. Error

  129. All

  130. /lili pout.println("tr");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("id")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("casedata")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("caseinfo")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("status")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("casebank")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("casetime")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("system")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("action")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili p//out.println("td"https://blog.csdn.net/2401_83014899/article/details/+rst.getString("imageinfo")https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("td"https://blog.csdn.net/2401_83014899/article/details/+"img src="https://blog.csdn.net/2401_83014899/article/details/+"/data/201407212947_1.jpg"https://blog.csdn.net/2401_83014899/article/details/+""https://blog.csdn.net/2401_83014899/article/details/+"/img"https://blog.csdn.net/2401_83014899/article/details/+"/td");/p /lili pout.println("/tr");/p /lili p}/p /lili p//关闭连接、释放资源/p /lili prst.close();/p /lili pstmt.close();/p /lili pcon.close();/p /lili p%>
  131. ID 测试数据 测试输出 测试结果 测试备注 执行时间 系统 action 图片

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

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

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon