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

目录
相关文章
|
8天前
|
Web App开发 Java 测试技术
自动化测试的新篇章:使用Selenium WebDriver进行高效测试
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试犹如一艘航船,带领着质量保证团队驶向效率与精准的彼岸。本文将揭开Selenium WebDriver的神秘面纱,通过实际案例引导您掌握这一强大的自动化测试工具。我们将从Selenium WebDriver的基础概念出发,逐步深入到代码示例,最后探讨其在现实项目中的应用场景和优势,旨在为您的软件测试之旅提供清晰的指南。
|
8天前
|
Web App开发 测试技术 持续交付
探索自动化测试:以Selenium和Python为例
【8月更文挑战第31天】自动化测试在现代软件开发中扮演着不可或缺的角色。本文将通过一个简化的示例,展示如何使用Selenium和Python进行Web应用的自动化测试。我们将从安装必要的工具开始,逐步构建一个简单的测试脚本,并执行它来验证其功能。通过这个过程,我们旨在揭示自动化测试的价值,并激励读者深入探索这一领域。
|
8天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【8月更文挑战第31天】在软件开发的世界中,自动化测试是提高产品质量和开发效率不可或缺的一环。本文将深入探讨Selenium这一强大的自动化测试工具,从其架构、优势到实战应用,一步步揭示如何利用Selenium框架提升软件测试的效率和准确性。通过具体的代码示例,我们将展示Selenium如何简化测试流程,帮助开发者快速定位问题,确保软件的稳定性和可靠性。无论你是测试新手还是资深开发者,这篇文章都将为你打开一扇通往高效自动化测试的大门。
|
8天前
|
Java 测试技术 API
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】本文旨在引导读者理解自动化测试的重要性,并逐步深入介绍如何利用Selenium和Appium这两个强大的工具来提升测试效率和质量。文章不仅分享理论知识,还通过具体代码示例,展示如何在Web应用和移动应用测试中实施自动化策略。
|
8天前
|
Web App开发 人工智能 测试技术
探索自动化测试的奥秘:以Selenium为例
【8月更文挑战第31天】在软件发展的快速车道上,自动化测试是确保质量和效率的关键。本文将深入探讨自动化测试的重要性,并以Selenium这一流行的自动化测试框架为例,展示如何通过代码实现自动化测试流程。文章不仅提供了实用的代码示例,还讨论了自动化测试在现代软件开发中扮演的角色和面临的挑战。
|
8天前
|
Web App开发 敏捷开发 Java
自动化测试入门:以Selenium为例
【8月更文挑战第31天】在软件开发的海洋中,自动化测试犹如一座灯塔,指引着项目质量保障的方向。本文将带你驶入Selenium自动化测试的港湾,从搭建环境到编写简单的测试脚本,逐步展开对Web应用功能和界面的自动化验证之旅。通过实际代码示例,我们将一起探索如何利用Selenium工具提升测试效率,确保软件质量的同时,为开发流程增添一份信心与乐趣。
|
8天前
|
Web App开发 安全 测试技术
自动化测试中的Python魔法:使用Selenium和pytest框架
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试是确保航行安全的灯塔。本文将带你探索如何利用Python语言结合Selenium和pytest框架,搭建一套高效的自动化测试体系。我们将从基础设置讲起,逐步深入到编写测试用例,最后通过一个实战案例来展示如何在实际项目中运用这些工具。文章旨在为读者提供一套清晰的自动化测试解决方案,让你的开发之旅更加顺畅。
|
8天前
|
Web App开发 敏捷开发 Java
自动化测试中的神器 —— Selenium WebDriver
【8月更文挑战第31天】在软件开发的海洋里,自动化测试是那艘能带领我们驶向高效与精准彼岸的帆船。本文将带你领略Selenium WebDriver的魅力,从安装到实战,一步步解锁自动化测试的新境界。你将看到代码如何化繁为简,让重复的测试工作变得轻松愉快。让我们一起驾驭这股代码的风,向着软件质量的灯塔进发!
|
8天前
|
测试技术 Android开发 iOS开发
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】在软件测试的海洋中,自动化测试如同一艘快艇,带领我们高效地穿越波涛汹涌的手动测试海域。本文将带你从Selenium的网页自动化测试出发,一路驶向Appium的移动应用自动化测试岛屿,揭秘这两种工具如何改变软件测试的航向。你将看到代码示例的灯塔,指引你理解它们如何在实战中发挥作用,以及为什么掌握这些技能对于测试人员来说至关重要。
|
8天前
|
Web App开发 Java 测试技术
探索自动化测试之美:以Selenium为例
【8月更文挑战第31天】在软件开发的海洋中,自动化测试犹如一艘航船,带领团队驶向高效、准确的彼岸。本文将通过深入浅出的方式,介绍如何使用Selenium工具进行自动化测试,让读者从基础到实践,一步步掌握自动化测试的核心技能。文章将围绕Selenium的安装配置、基本操作、实战案例以及常见问题解答展开,旨在帮助读者快速入门并应用于实际项目中。