优化html报告

为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化:

  • 测试报告中文显示,优化一些断言失败正文乱码问题
  • 新增错误和失败截图,展示到html报告里
  • 优化点击截图放大不清晰问题
  • 增加饼图统计
  • 失败后重试功能
  • 兼容python2.x 和3.x

报告效果

1.生成的测试报告效果如下图,默认展示报错和异常的用例,失败重试的用例结果也会统计进去。

2.点击显示截图,可以直接显示截取的图片,无需保存到本地

table表格

1.修改表格的td后面内容,可以自定义表格名称

2.drawCircle这个后面是生成饼图功能

  1. <tr id='header_row'>
  2. <td>测试组/测试用例</td>
  3. <td>总数</td>
  4. <td>通过</td>
  5. <td>失败</td>
  6. <td>错误</td>
  7. <td>视图</td>
  8. <td>错误截图</td>
  9. </tr>
  10. %(test_list)s
  11. <tr id='total_row'>
  12. <td>统计</td>
  13. <td>%(count)s</td>
  14. <td>%(Pass)s</td>
  15. <td>%(fail)s</td>
  16. <td>%(error)s</td>
  17. <td>&nbsp;</td>
  18. <td>&nbsp;</td>
  19. </tr>
  20. </table>
  21. <script>
  22. drawCircle(%(Pass)s, %(fail)s, %(error)s)
  23. </script>

异常截图

1.这个是用例跑失败后,会自动截图的,图片以base64方式存储到html报告里面,无需保存到本地

driver.get_screenshot_as_base64()

  1. def addError(self, test, err):
  2. self.error_count += 1
  3. self.status = 1
  4. TestResult.addError(self, test, err)
  5. _, _exc_str = self.errors[-1]
  6. output = self.complete_output()
  7. self.result.append((2, test, output, _exc_str))
  8. try:
  9. driver = getattr(test, "driver")
  10. test.img = driver.get_screenshot_as_base64()
  11. except AttributeError:
  12. test.img = ""
  13. if self.verbosity > 1:
  14. sys.stderr.write('E ')
  15. sys.stderr.write(str(test))
  16. sys.stderr.write('\n')
  17. else:
  18. sys.stderr.write('E')

2.测试用例一定要定义driver参数,如:

driver = webdriver.Firefox()

失败重试

1.生成报告的参数里面加了一个参数retry=1,这个表示用例失败后,会重新跑一次。

  1. # coding:utf-8
  2. import HTMLTestRunner_jpg
  3. import unittest
  4. if __name__ == "__main__":
  5. discover = unittest.defaultTestLoader.discover("case","test*.py")
  6. print(discover)
  7. run = HTMLTestRunner_jpg.HTMLTestRunner(title="可以装逼的测试报告",
  8. description="测试结果",
  9. stream=open("result.html","wb"),
  10. verbosity=2,
  11. retry=1)
  12. run.run(discover)

2.verbosity=2这个参数是控制台显示测试结果风格,如下这种:

  1. E test_01 (pject.test_jpg.Test1)
  2. retesting... 1
  3. E test_01 (pject.test_jpg.Test1)
  4. F test_02 (pject.test_jpg.Test1)
  5. retesting... 1
  6. F test_02 (pject.test_jpg.Test1)
  7. ok test_03 (pject.test_jpg.Test1)
  8. ok test_01 (pject.test_xxx.Test1)
  9. ok test_02 (pject.test_xxx.Test1)
  10. Time Elapsed: 0:00:17.892222

执行用例

1.这是参考的测试用例,我没在用例里面生成测试报告,生成测试报告采用的是上面的批量执行,单独建个脚本执行

  1. # coding:utf-8
  2. from selenium import webdriver
  3. import unittest
  4. class Test1(unittest.TestCase):
  5. u'''博客园测试'''
  6. @classmethod
  7. def setUpClass(cls):
  8. cls.driver = webdriver.Firefox()
  9. @classmethod
  10. def tearDownClass(cls):
  11. cls.driver.quit()
  12. def test_01(self):
  13. u"""定位失败截图案例"""
  14. self.driver.get("https://www.baidu.com")
  15. self.driver.find_element_by_id('xxxxx').send_keys(u'百度一下')
  16. self.driver.find_element_by_id('su').click()
  17. self.assertTrue(True)
  18. def test_02(self):
  19. u'''失败用例'''
  20. self.driver.get("http://www.cnblogs.com/yoyoketang/")
  21. t = self.driver.title
  22. self.assertIn(u"失败用例",t)
  23. def test_03(self):
  24. u'''通过用例'''
  25. self.driver.get("http://www.cnblogs.com/yoyoketang/")
  26. self.assertIn(u"上海",self.driver.title)
  27. if __name__ == "__main__":
  28. unittest.main()

参考大神github

大神github点这里

优化后源码

1.这个是在大神的基础上稍微做了一点点图片显示的优化,之前的图片太小,显示模糊,放大了下

2.然后重新整理了下,采用批量执行用例的方式

3.参考代码从github下载吧
https://github.com/yoyoketang/selenium_report/

selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&3)【转载】的更多相关文章

  1. selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&3)

    优化html报告 为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化: 测试报告中文显示,优化一些断言失败正文乱码问题 新增错误和失败截图,展示到html报告里 ...

  2. testng优化:失败重跑,extentReport+appium用例失败截图,测试报告发邮件

    生成的单html方便jenkins集成发邮件,= = 构建失败发邮件 参考:https://blog.csdn.net/galen2016/article/details/77975965 步骤: 1 ...

  3. selenium+python自动化98--文件下载弹窗处理(PyKeyboard)

    前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...

  4. selenium+python自动化79-文件下载(SendKeys)

    前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...

  5. pytest文档8-html报告报错截图+失败重跑

    前言 做web自动化的小伙伴应该都希望在html报告中展示失败后的截图,提升报告的档次,pytest-html也可以生成带截图的报告. conftest.py 1.失败截图可以写到conftest.p ...

  6. RF实现多次失败重跑结果合并的基础方法和优化方法

    实现思路:通过分次执行失败案例重跑,然后通过结果文件合并命令实现多次失败重跑结果文件的合并,并输出合并后的log和report文件: 说明:具体失败案例重跑命令和结果文件合并命令请参考本博客其他相关章 ...

  7. selenium+python自动化登录脚本

    利用selenium+python写的一个关于登录的自动化脚本

  8. 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)

    Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...

  9. selenium+python自动化102-登录页面滑动解锁(ActionChains)

    前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...

随机推荐

  1. 辨析ADK&JVM&JRE&JDK&ADT

    一.SDK 英文全称:Software Development Kit 中文译名:软件开发工具包 详解: 由第三方服务商提供的实现软件产品某项功能的工具包. 为了扩展软件功能或其它方面而设计出来给开发 ...

  2. PhpStorm 配置IDE

    IDE => Xdebug => Apache(XAMPP) => Firefox + easist Xdebug 1>XAMPP停止apache服务;2>在安装目录下找 ...

  3. zufe 蓝桥选拔

    https://zufeoj.com/contest.php?cid=1483 问题 A: A 代码: #include <bits/stdc++.h> using namespace s ...

  4. JavaScript五种继承方式详解

    本文抄袭仅供学习http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 一. 构造函数绑定 ...

  5. Hibernate常用方法之_删除

    1.使用session的delete方法 public void deleteUser(User user){ Session session = null; Transaction transact ...

  6. 创建一个doc对象时候 如果读取了一个已存在的xml对象时候 该xml对象的结构已存在doc中 当改变该doc结构时候 不需要创建新的doc对象

    创建一个doc对象时候 如果读取了一个已存在的xml对象时候 该xml对象的结构已存在doc中 当改变该doc结构时候不 需要创建新的doc对象 直接添加即可 他会同步过去

  7. 【bzoj2956】模积和 数论

    题目描述 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. 输入 第一行两个数n,m. 输出 一个整数表示答案mod 1994041 ...

  8. C#中多态

    我的理解是:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态. 1: OverRide 实现多态 public class Animal { public virtual void ...

  9. [LINUX]警告:检测到时钟错误。您的创建可能是不完整的。

    [LINUX]警告:检测到时钟错误.您的创建可能是不完整的.   原因:     如果上一次编译时为20071001,你把系统时间改成20070901后再编译就会报这样的错误. 解决:     把时间 ...

  10. 【转】The test form is only available for requests from the local machine 解决方法

    描述:在内网可以访问 WebServer     ,在外部网站无法通过IP调用 webserver 转自:http://www.cnblogs.com/xiaogelove/p/3447283.htm ...