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

目录
相关文章
|
19天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
29 4
|
29天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
84 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
8天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
54 3
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
47 1
|
1月前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
76 6
|
1月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
1月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
37 0
精心整理python测试小技巧:第十六节
精心整理python测试小技巧:第十六节
精心整理python测试小技巧:第十五节
精心整理python测试小技巧:第十五节