Selenium+python之HTML测试报告

简介: Selenium+python之HTML测试报告

Selenium+python之HTML测试报告

一、准备

1、本节用到的模块——HTMLTestRunner

1)下载:下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

鼠标右键→目标另存为,保存到本地。

2)安装:将下载的HTMLTestRunner.py文件复制到Python安装目录下即可

...\Python36\Lib

3)验证:在Python交互模式下引入HTMLTestRunner模块,如系统没有报错,则说明添加成功

image.png

2、修改HTMLTestRunner

因为HTMLTestRunner是基于Python2开发的,如果在Python3环境下使用,需要对其部分内容进行修改。使用notepad++打开HTMLTestRunner.py文件,修改如下内容:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()

第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, '\nTimeElapsed:%s' % (self.stopTime - self.startTime))

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode(‘latin-1‘)修改成uo = e

第772行,将ue = e.decode(‘latin-1‘)修改成ue = e

二、生成HTML测试报告

以百度搜索为例生成HTML测试报告

1、代码实现

# -*- coding: utf-8 -*-
from selenium import webdriver
from HTMLTestRunner import HTMLTestRunner
import unittest,time

class BaiduIdeTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "https://www.baidu.com/"


    def test_baidu_ide(self):
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
        driver.find_element_by_id("su").click()
        time.sleep(5)
        self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)



    def tearDown(self):
        self.driver.quit()


if __name__ == "__main__":
    #构造测试套件
    testsuit = unittest.TestSuite()
    testsuit.addTest(BaiduIdeTest("test_baidu_ide"))
    #定义测试报告存放路径
    fp = open('./result.html','wb')
    #定义测试报告
    runner = HTMLTestRunner(stream=fp,
                            title='自动化测试报告',
                            description='用例执行情况:')
    runner.run(testsuit)
    #关闭测试报告
    fp.close()

2、代码分析

1)将HTMLTestRunner模块用import导入进来。

2)通过open()方法以二进制写模式('wb')打开当前目录下的result.heml,如果没有,则自动创建。

3)调用HTMLTestRunner模块下的HTMLTestRunner类。

  stream 指定测试报告文件

  title 定义测试报告的标题

  description 定义测试报告的副标题

4)通过HTMLTestRunner的run()方法来运行测试套件中的测试用例

5)关闭测试报告文件close()

3、代码效果

image.png

4、tips

代码执行的时候将鼠标放到“if __name__ == "__main__":”右键选择“Run'baidu_ide_text'” 而不要使用“Run untitest in baidu_ide_text'”,否则无法生成测试报告

三、更易读的测试报告

通过Python的doc string类型的注释增强测试报告的可度性。

python代码注释分为两种:commen(普通注释#开头)和doc string(描述函数、类和方法三引号表示)

1、代码实现

......
class BaiduIdeTest(unittest.TestCase):
    '''百度搜索测试'''
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "https://www.baidu.com/"


    def test_baidu_ide(self):
        '''搜索关键字'''
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
        driver.find_element_by_id("su").click()
        time.sleep(5)
        self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)
........

2、代码效果

image.png

四、测试报告名称

使用python的time模块,在报告名称中加入当前时间增强测试报告文件的识别性。

1、知识准备

time.time():获取当前时间戳

time.ctime():当前时间的字符串形式

time.location():当前时间的struct_time形式

time.strftime():获得当前时间,可以将时间格式化字符串

常用格式化符号:

%Y:带世纪的年,2017

%y:不带世纪的年,17

%m:月份

%d:天

%H:24小时制的小时

%M:分

%S:秒

2、代码实现

......
if __name__ == "__main__":
    #构造测试套件
    testsuit = unittest.TestSuite()
    testsuit.addTest(BaiduIdeTest("test_baidu_ide"))

    #按照一定格式获取当前时间
    now = time.strftime("%Y%m%d_%H%M%S")
    #将当前时间加入到报告文件名称中
    filename = './'+now+'result.html'
    #定义测试报告存放路径
    fp = open(filename,'wb')
    #定义测试报告
    runner = HTMLTestRunner(stream=fp,
                            title='自动化测试报告',
                            description='用例执行情况:')
    runner.run(testsuit)
    #关闭测试报告
    fp.close()

3、代码效果

image.png

五、项目集成测试报告

将以上内容集成到项目的runtest.py文件中,使其作用于整个测试项目

1、代码实现

# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest, time

class YoudaoIdeTest(unittest.TestCase):
    '''有道翻译测试'''
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.youdao.com/"


    def test_youdao_ide(self):
        '''中英翻译测试'''
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_id("translateContent").clear()
        driver.find_element_by_id("translateContent").send_keys(u"自动化测试报告")
        driver.find_element_by_css_selector("button").click()
        time.sleep(5)
        self.assertEqual(u"【自动化测试报告】", driver.title)


    def tearDown(self):
        self.driver.quit()


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

2、代码效果

image.png

目录
相关文章
|
12月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
670 1
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
741 18
|
12月前
|
SQL 测试技术 数据库
healenium+python+selenium
上次介绍了如何利用healenium+java+selenium来实现selenium的自愈,这次介绍如何healenium+python+selenium。关于healenium+python+selenium网上资料更少,并且甚至是错误的。在著名的书籍《软件测试权威指南中》也是有一定问题的。现在介绍如下
525 4
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
647 0
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
523 0
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
573 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
前端开发 Java 测试技术
selenium+python自动化测试--登录
selenium+python自动化测试--登录
503 2

推荐镜像

更多