zoukankan      html  css  js  c++  java
  • Python-Unittest多线程生成报告

    前言

      selenium多线程跑用例,这个前面一篇已经解决了,如何生成一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了。
      环境必备:
      · python3.6 : BeautifulReport不支持2.7
      · tomorrow : pip install tomorrow安装
      · BeautifulReport : github下载后放到/Lib/site-packages/目录下
      BeautifulReport
      1.BeautifulReport下载地址: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, "test_case")
    
    
    if not os.path.exists(casepath):
    
        print("测试用例需放到‘test_case’文件目录下")
    
        os.mkdir(casepath)
    
    reportpath = os.path.join(curpath, "test_result","report")
    if not os.path.exists(reportpath):
    
        print("测试用例需放到‘report’文件目录下")
    
        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=r"report")
    
    if __name__ == "__main__":
    
        # 用例集合
        cases = add_case()
        # print(cases)
        for i in cases:
            # print(i)
            run(i)

    注:BuatifulReport.report的 log_path入参存在多层级,写成 log_path=r"test_result eport")

     
     
      4.报告效果图
      备注:BeautifulReport是某大神在github分享的框架,这里借花献佛了,更多使用方法参考地址:https://github.com/TesterlifeRaymond/BeautifulReport
     
  • 相关阅读:
    km算法
    HDU 1358
    HDU 3746
    CF 432D
    HDU 4725
    14年百度之星资格赛第四题
    AC自动机
    RMQ
    HDU 4635
    HDU 3667
  • 原文地址:https://www.cnblogs.com/xyao1/p/10912781.html
Copyright © 2011-2022 走看看