python selenium-webdriver 生成测试报告 (十四)

测试最后的一个重要的过程就是生成一份完整的测试报告,生成测试报告的主要是通过python的一个第三方模块HTMLTestRunner.py生成,但是生成的测试报告不是特别的美观,而且没有办法统计测试结果分类,同时也没有办法把测试结果的图片保存下来。通过github 查找到一个改版后的HTMLTestRunner,但是发现美观是美观些,但是有些小问题,而且也不能把我的测试结果截图显示,所以自己又在其基础上增加了图片、测试结果的饼图分布、对测试结果进行错误、失败、通过进行分类。

生成的报告

下面看下如何生成报告,接下来我们为写一个测试演示的代码生成一份报告,生成报告的时候主要利用unittest和HTMLTestReport构建。

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

class Baidu(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        self.base_url = "https://www.baidu.com"
        self.driver.get(self.base_url)

    def test_case1(self):
        ‘‘‘设计测试失败case‘‘‘
        print ("========【case_0001】打开百度搜索 =============")
        current_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
        # 必须打印图片路径HTMLTestRunner才能捕获并且生成路径,\image\**\\**.png 是获取路径的条件,必须这样的目录
        pic_path = ‘.\\result\\image\\‘ + ‘2017-07-17\\‘ + current_time +‘.png‘  #设置存储图片路径,测试结果图片可以按照每天进行区分
        print (pic_path)  #打印图片路径
        time.sleep(2)
        self.driver.save_screenshot(pic_path)  #截图,获取测试结果
        self.assertEqual(‘百度‘,self.driver.title)  #断言判断测试是否成功,判断标题是否为百度(设计失败的case)

    def test_case2(self):
        ‘‘‘设计测试过程中报错的case‘‘‘
        print ("========【case_0002】搜索selenium =============")
        self.driver.find_element_by_id("kw").clear()
        self.driver.find_element_by_id("kw").send_keys(u"selenium")
        self.driver.find_element_by_id(‘su‘).click()
        time.sleep(2)
        current_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
        pic_path = ‘.\\result\\image\\‘+ ‘2017-07-17\\‘ + current_time + ‘.png‘
        print (pic_path)
        self.driver.save_screenshot(pic_path)  #截图测试结果
        self.assertIn1(‘selenium‘,self.driver.title)   #断言书写错误,导致case出错

    def test_case3(self):
        ‘‘‘设计测试成功的case‘‘‘
        print ("========【case_0003】 搜索梦雨情殇博客=============")
        self.driver.find_element_by_id("kw").clear()
        self.driver.find_element_by_id("kw").send_keys(u"梦雨情殇")
        self.driver.find_element_by_id(‘su‘).click()
        time.sleep(2)
        current_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
        pic_path = ‘.\\result\\image\\‘+ ‘2017-07-17\\‘ + current_time + ‘.png‘
        print (pic_path)
        self.driver.save_screenshot(pic_path)
        self.assertIn(‘梦雨情殇‘,self.driver.title)

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

if __name__ == "__main__":
    ‘‘‘生成测试报告‘‘‘
    current_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
    testunit = unittest.TestSuite()   #构建测试套件
    testunit.addTest(Baidu("test_case1"))
    testunit.addTest(Baidu("test_case2"))
    testunit.addTest(Baidu("test_case3"))
    report_path = ".\\result\\SoftTestReport_" + current_time  + ‘.html‘  #生成测试报告的路径
    fp = open(report_path, "wb")
    runner = HTMLTestReport.HTMLTestRunner(stream=fp, title=u"自动化测试报告",description=‘自动化测试演示报告‘,tester=‘梦雨‘)
    runner.run(testunit)
    fp.close()

过程很简单,过程需要理解整个过程,HTMLTestReport代码已经共享,请下载整体工程。

时间: 2024-12-30 13:37:26

python selenium-webdriver 生成测试报告 (十四)的相关文章

Python+Selenium练习(二十四)- 鼠标右键

网页上有些元素是支持右键来触发新的菜单的. 练习场景:在百度首页,百度logo的右键,查看图片. 场景拆分: 1.打开百度首页,找到logo,右键鼠标 2.移动菜单,查看图像,然后点击 核心问题:如何操作邮件?在Selenium中有一个ActionChains模块支持,右键,鼠标悬停,拖拽,双击等动作.我们可以通过键盘向下箭头来选择查看图像这个菜单,然后点击就可以达到目的. 具体代码: # coding=utf-8 import time from selenium import webdriv

selenium webdriver学习(十)------------如何把一个元素拖放到另一个元素里面(转)

selenium webdriver学习(十)------------如何把一个元素拖放到另一个元素里面 博客分类: Selenium-webdriver 元素拖放drag and drop Q群里有时候会有人问,selenium  webdriver怎么实现把一个元素拖放到另一个元素里面.这一节总一下元素的拖放. 下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的div框中. http://koyoz.com/demo/html/drag-drop/drag-drop.

python+selenium webdriver 自动化测试(一)

作为一个刚刚接触python,第一次编程,第一次试着去做自动化的小渣渣,借此地来见证自己的进步,也许每一步对于别人来说微不足道, 但是对于自己来说,是无数次思考之后才能迈出的一步,很吃力,也同样很欣慰.废话不多说,进入主题. 我用的是python+selenium webdriver来搭建自动化框架,对于python语言,不熟悉,只是粗略的看了一遍书,不知道该编什么,也不知道怎么编,请教大牛后,直接上路,不纠结,实战中可以学会更多.推荐一本书,虫师的<selenium webdriver (py

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

Python Selenium Webdriver常用方法总结

常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: maximize_window() 设置窗口参数:set_window_size(600,800) 后退到前一页: back() 前进到后一页: forward() 刷新页面: refresh() 元素定位: id定位:find_element_by_id() name定位:find_element_by_name() class定位:find_element_b

Python 3标准库 第十四章 应用构建模块

Python 3标准库 The Python3 Standard Library by  Example -----------------------------------------第十四章     应用构建模块-----------------------------14.1  argparse:命令行选项和参数解析----------------------------- argparse模块 14.1.1  建立解析器 14.1.2  定义参数 argparse模块 14.1.3 

用Python selenium+webdriver的一个简单的登录自动化测试--豆丁网登录测试

#coding=utf-8 from selenium import webdriver #from selenium.webdriver.remote import switch_to #from selenium.webdriver.common import alert #import unittest  import time,os def users_zidian():  #用户名用例用一个字典实现参数化调用#     users={'zhengshuheng':'123456','[

python selenium webdriver处理浏览器滚动条

用键盘右下角的UP,DOWN按键来处理页面滚动条 这种方法很灵活用起来很方便!!!! from selenium import webdriver import time from selenium.webdriver.common.keys import Keys #访问百度 driver=webdriver.Chrome() driver.get("http://www.baidu.com") #搜索 driver.find_element_by_id("kw"

python+selenium webdriver 如何处理table

Table对象是自动化测试中经常需要处理的对象.由于webdriver中没有专门的table类,所以我们需要简单的封装出一个易用易扩展的Table类来帮助简化代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一.导入HTMLTestRunner 1.这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html 2.Download下HTMLTestRunner.py文件就是我们需