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

简介: 优化html报告为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化:测试报告中文显示,优化一些断言失败正文乱码问题新增错误和失败截图,展示到html报告里优化点击截图放大不清晰问题增加饼图统计失败后重试功能兼容python2.x 和3.x报告效果1.生成的测试报告效果如下图,默认展示报错和异常的用例,失败重试的用例结果也会统计进去。

优化html报告

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

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

报告效果

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

report

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

shoot

table表格

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

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

<tr id='header_row'>
    <td>测试组/测试用例</td>
    <td>总数</td>
    <td>通过</td>
    <td>失败</td>
    <td>错误</td>
    <td>视图</td>
    <td>错误截图</td>
</tr>
%(test_list)s
<tr id='total_row'>
    <td>统计</td>
    <td>%(count)s</td>
    <td>%(Pass)s</td>
    <td>%(fail)s</td>
    <td>%(error)s</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
</tr>
</table>
<script>
    drawCircle(%(Pass)s, %(fail)s, %(error)s)
</script>

异常截图

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

driver.get_screenshot_as_base64()

    def addError(self, test, err):
        self.error_count += 1
        self.status = 1
        TestResult.addError(self, test, err)
        _, _exc_str = self.errors[-1]
        output = self.complete_output()
        self.result.append((2, test, output, _exc_str))
        try:
            driver = getattr(test, "driver")
            test.img = driver.get_screenshot_as_base64()
        except AttributeError:
            test.img = ""
        if self.verbosity > 1:
            sys.stderr.write('E  ')
            sys.stderr.write(str(test))
            sys.stderr.write('\n')
        else:
            sys.stderr.write('E')

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

driver = webdriver.Firefox()

失败重试

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

# coding:utf-8

import HTMLTestRunner_jpg
import unittest

if __name__ == "__main__":
    discover = unittest.defaultTestLoader.discover("case","test*.py")
    print(discover)
    
    run = HTMLTestRunner_jpg.HTMLTestRunner(title="可以装逼的测试报告",
                                            description="测试结果",
                                            stream=open("result.html","wb"),
                                            verbosity=2,
                                            retry=1)
    
    run.run(discover)

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

E  test_01 (pject.test_jpg.Test1)
retesting... 1
E  test_01 (pject.test_jpg.Test1)
F  test_02 (pject.test_jpg.Test1)
retesting... 1
F  test_02 (pject.test_jpg.Test1)
ok test_03 (pject.test_jpg.Test1)
ok test_01 (pject.test_xxx.Test1)
ok test_02 (pject.test_xxx.Test1)

Time Elapsed: 0:00:17.892222

执行用例

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

# coding:utf-8
from selenium import webdriver
import unittest

class Test1(unittest.TestCase):
    u'''博客园测试'''

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_01(self):
        u"""定位失败截图案例"""
        self.driver.get("https://www.baidu.com")
        self.driver.find_element_by_id('xxxxx').send_keys(u'百度一下')
        self.driver.find_element_by_id('su').click()
        self.assertTrue(True)

    def test_02(self):
        u'''失败用例'''
        self.driver.get("http://www.cnblogs.com/yoyoketang/")
        t = self.driver.title
        self.assertIn(u"失败用例",t)

    def test_03(self):
        u'''通过用例'''
        self.driver.get("http://www.cnblogs.com/yoyoketang/")
        self.assertIn(u"上海",self.driver.title)


if __name__ == "__main__":
    unittest.main()

参考大神github

大神github点这里

优化后源码

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

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

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

学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:646645429

《selenium webdriver基于python源码案例》已出书:selenium webdriver基于Python源码案例(购买此书送对应PDF版本)

相关文章
|
9天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
【4月更文挑战第21天】本文介绍了Selenium中处理特殊测试场景的方法,如鼠标悬停。Selenium的Actions类提供了鼠标悬停功能,用于模拟用户在网页元素上的悬停行为。文中通过实例展示了如何使用Actions悬停并展开下拉菜单,以及在搜索时选择自动补全的字段。代码示例包括了打开百度首页,悬停在“更多”元素上显示下拉菜单并点击“音乐”,以及在搜索框输入关键词并自动补全的过程。
33 0
|
1天前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
1天前
|
编解码 移动开发 前端开发
【专栏:HTML与CSS移动端开发篇】使用Viewport Meta标签优化移动端显示
【4月更文挑战第30天】本文介绍了HTML的Viewport Meta标签在移动端网页优化中的作用。Viewport Meta标签定义了视口属性,如宽度、高度、初始缩放等,解决移动设备因屏幕尺寸差异导致的显示问题。主要属性包括width(常用device-width)、initial-scale、maximum-scale、minimum-scale和user-scalable。
|
1天前
|
中间件 测试技术 API
探索自动化测试工具的新边界:Selenium与Appium的集成实践
【4月更文挑战第30天】 随着移动应用和Web应用的不断融合,传统的自动化测试工具需要适应新的测试环境。本文将详细分析Selenium和Appium这两款流行的自动化测试工具的集成实践,探讨如何构建一个能够同时支持Web和移动端应用的自动化测试框架。通过对比两者的技术架构、功能特性以及在实际项目中的集成过程,我们旨在为读者提供一个清晰的指导,帮助他们在复杂的应用环境中实现高效、稳定的自动化测试流程。
|
1天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(&lt;https://www.sojump.com/m/2792226.aspx/&gt;)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
9 0
|
2天前
|
IDE 测试技术 持续交付
探索自动化测试工具Selenium的高效应用
【4月更文挑战第29天】 在快速迭代的软件开发过程中,高效的测试策略是确保产品质量的关键。本文将深入探讨如何利用自动化测试工具Selenium来提高软件测试的效率和准确性。通过介绍Selenium的核心功能、脚本编写技巧以及与持续集成环境的集成方法,我们旨在为读者提供一个全面的Selenium应用指南。此外,我们还将讨论常见的问题解决策略,并通过案例分析展示如何有效地运用Selenium进行复杂的Web应用测试。
|
3天前
|
存储 前端开发 测试技术
《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
【4月更文挑战第27天】本文介绍了使用Java+Selenium进行Web自动化测试时,如何遍历和操作多选按钮的方法。文章分为两个部分,首先是一个本地HTML页面的示例,展示了多选按钮的HTML代码和页面效果,并详细解释了遍历多选按钮的思路:找到所有多选按钮的共同点,通过定位这些元素并放入list容器中,然后使用for循环遍历并操作。 第二部分介绍了在JQueryUI网站上的实战,给出了被测网址,展示了代码设计,同样使用了findElements()方法获取所有多选按钮并存储到list中,然后遍历并进行点击操作。最后,文章对整个过程进行了小结,并推荐了作者的其他自动化测试教程资源。
11 0
|
4天前
|
前端开发 测试技术 Python
《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
【4月更文挑战第25天】本文介绍了自动化测试中如何处理单选和多选按钮的操作,包括它们的定义、HTML代码示例以及如何判断和操作这些元素。文章通过一个简单的HTML页面展示了单选和多选框的示例,并提供了Java+Selenium实现的代码示例,演示了如何检查单选框是否选中以及如何进行全选操作。
11 0
|
5天前
|
Web App开发 人工智能 Java
Python Selenium实现自动化测试及Chrome驱动使用
Python Selenium实现自动化测试及Chrome驱动使用
9 2
|
6天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
【4月更文挑战第24天】本文介绍了在自动化测试中处理HTML下拉选择(select)的方法。使用Selenium的Select类,可以通过index、value或visible text三种方式选择选项,并提供了相应的取消选择的方法。此外,文章还提供了一个示例HTML页面(select.html)和相关代码实战,演示了如何使用Selenium进行选择和取消选择操作。最后,文章提到了现代网页中类似下拉框的新设计,如12306网站的出发地选择,并给出了相应的代码示例,展示了如何定位并选择特定选项。
16 0