专栏首页从零开始学自动化测试selenium+python自动化90-多线程生成报告(BeautifulReport)

selenium+python自动化90-多线程生成报告(BeautifulReport)

前言

selenium多线程跑用例,这个前面一篇已经解决了,如何生产一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了。

环境必备:

- python3.6 : BeautifulReport不支持2.7

- tomorrow : pip install tomorrow安装

- BeautifulReport : github下载后放到/Lib/site-packages/目录下

一、 BeautifulReport

1.BeautifulReport下载地址:[BeautifulReport](https://github.com/TesterlifeRaymond/BeautifulReport)

2.下载方法:

- 方法一 会使用git的直接用git下载到本地

> git clone https://github.com/TesterlifeRaymond/BeautifulReport

- 方法二 点Clone or Download按钮,Download ZIP就能下载到本地了

3.下载完之后,把BeautifulReport整个包放到python的/Lib/site-packages/目录下

二、使用方法

1.项目结构:

case test开头的.py用例脚本

report 放生成的html报告

run_all.py 用于执行全部脚本

2.单个测试脚本test_a.py参考

```

# coding:utf-8

import unittest

from selenium import webdriver

import time

class Testaa(unittest.TestCase):

u'''测试用例a的集合'''

@classmethod

def setUpClass(cls):

cls.driver = webdriver.Firefox()

def setUp(self):

self.driver.get("https://www.cnblogs.com/yoyoketang/")

def test_01(self):

u'''用例1:用例1的操作步骤'''

t = self.driver.title

print(t)

self.assertIn("悠悠", t)

def test_02(self):

u'''用例2:用例2的操作步骤'''

t = self.driver.title

print(t)

self.assertIn("悠悠", t)

def test_03(self):

u'''用例3:用例3的操作步骤'''

t = self.driver.title

print(t)

self.assertIn("悠悠", t)

@classmethod

def tearDownClass(cls):

cls.driver.quit()

if __name__ == "__main__":

unittest.main()

```

3.run_all代码

```

# coding=utf-8

import unittest

from BeautifulReport import BeautifulReport

import os

from tomorrow import threads

# 获取路径

curpath = os.path.dirname(os.path.realpath(__file__))

casepath = os.path.join(curpath, "case")

if not os.path.exists(casepath):

print("测试用例需放到‘case’文件目录下")

os.mkdir(casepath)

reportpath = os.path.join(curpath, "report")

if not os.path.exists(reportpath): os.mkdir(reportpath)

def add_case(case_path=casepath, rule="test*.py"):

'''加载所有的测试用例'''

discover = unittest.defaultTestLoader.discover(case_path,

pattern=rule,

top_level_dir=None)

return discover

@threads(3)

def run(test_suit):

result = BeautifulReport(test_suit)

result.report(filename='report.html', description='测试deafult报告', log_path='report')

if __name__ == "__main__":

# 用例集合

cases = add_case()

print(cases)

for i in cases:

print(i)

run(i)

```

4.报告效果图

备注:BeautifulReport是某大神在github分享的框架,这里借花献佛了,更多使用方法参考地址:https://github.com/TesterlifeRaymond/BeautifulReport

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:YOYO

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python+requests接口自动化项目完整框架设计

    前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违法职业道德了,就算别人分享了,也只适用于本公司内部的业务。 所以用例的...

    上海-悠悠
  • Selenium2+python自动化52-unittest执行顺序

    前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。 本篇通过...

    上海-悠悠
  • Selenium2+python自动化20-引入unittest框架

    from selenium import webdriver from selenium.webdriver.common.by import By from ...

    上海-悠悠
  • 爬取百度百科5A景点摘要并实现分词

    这里baike_spider.py用来爬取景点摘要,内容放在senic_spots目录中; cut_word.py用来分词,分词结果放在cut_word_res...

    海天一树
  • Python学习 :面向对象 -- 三大

          -- 子类会根据左侧优先原则,在第一个父类中寻找方法,在找不到的情况下在去父类的父类中寻找

    py3study
  • python3 组合的个人理解

    python的组合在我看来和函数的嵌套差不多,比如一个人,一把枪,一个类调用人的类,和抢的类把他们组合起来,这就叫组合!

    py3study
  • Python学习(七)---- 面向对象学习(类)

    原文地址: https://blog.csdn.net/fgf00/article/details/52449707 编辑:智能算法,欢迎关注!

    智能算法
  • python 编写服务

    import win32timezone from logging.handlers import TimedRotatingFileHandler imp...

    用户5760343
  • 封装与扩展性

    封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码;而外部使用用者只知道一个接口(函数),只要接口(函数)名、参数不变,使用者的代码...

    超蛋lhy
  • Katalon + 傻瓜 == selenium 代码

    、简直是神器啊 (๑• . •๑)今天在翻莫烦大大的博客时,看到他提到一个工具,便去看了下,第一感受是,太好用了、爱不释手。

    小歪

扫码关注云+社区

领取腾讯云代金券