整体代码如下:

import os
import sys
import time
import datetime
import unittest
import HTMLTestRunner # git config --global user.name “用户名” # git config --global user.email “邮箱” # 获取项目路径下的目录
path_project = os.path.split(os.path.abspath(__file__))[0]
os.chdir(path_project) # 将项目路径保存
sys.path.append(path_project) # 获取当前文件所在目录
CUR_PATH = os.path.dirname(os.path.realpath(__file__)) # 设置时间格式
day_now = time.strftime("%Y-%m-%d")
time_now = time.strftime("%H-%M-%S") def add_case(case_name='Case', rule='test*.py'):
# 加载所有的用例
case_path = case_name
# case_path = os.path.join(CUR_PATH,case_name)
# 定义方法的参数
discover = unittest.defaultTestLoader.discover(case_path,
pattern=rule,
top_level_dir=CUR_PATH)
print("用例所在位置 %s 执行的文件 %s " % (case_path, rule))
return discover def run_case(all_case, reportName='report', filename="filename"):
# 1.1报告存放路径
report_path = os.path.join(os.getcwd(), reportName) # 1.2报告根据时间来分类
report_path = os.path.join(report_path, day_now)
if not os.path.exists(report_path): os.mkdir(report_path) filename = "%s-%s.html" % (time_now, filename)
report_abspath = os.path.join(report_path, filename) print("新创建报告文件所在位置 %s " % report_abspath) fp = open(report_abspath, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title=u'自动化测试报告测试结果如下:',
description=u'用例执行情况:') # 调用add_case函数返回值
runner.run(all_case)
fp.close() def get_report_file(report_path):
# 获取最新的测试报告
lists = os.listdir(report_path)
lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path, fn)))
print("最新报告名 %s" % lists[-1]) # 找到最新生成的报告文件
report_file = os.path.join(report_path, lists[-1])
return report_file def run_main(file_name, rule='test*.py'):
# 加载用例
all_case = add_case(file_name, rule) # 运行文件所在目录为文件名
file_name = str.split(file_name, '\\')[-1] # 生成测试报告的路径
run_case(all_case, filename=file_name) # 获取最新测试报告所在的文件路径 report_path = os.path.join("report", day_now) # 最新报告文件夹在项目中的路径
report_path = os.path.join(CUR_PATH, report_path) # 拼接项目 # 获取最新的测试报告
report_file = get_report_file(report_path)
print("最新报告路径为{0}".format(report_file)) def list_dir(file_dir):
'''
通过 listdir 得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归
'''
# print('\n\n<><><><><><> listdir <><><><><><>')
# print("current dir : {0}".format(file_dir))
file_dir = os.path.join(CUR_PATH, file_dir)
dir_list = os.listdir(file_dir)
file_name = []
for cur_file in dir_list:
# 获取文件的绝对路径
path = os.path.join(file_dir, cur_file)
if os.path.isfile(path): # 判断是否是文件还是目录需要用绝对路径
# print("{0} : is file!".format(cur_file))
continue
if os.path.isdir(path):
# print("{0} : is dir!".format(cur_file))
list_dir(path) # 递归子目录
file_name.append(cur_file)
return file_name def start_loading_case():
file_name = r'case'
all_dir = list_dir(file_name) for dir in range(len(all_dir)):
if "__pycache__" in all_dir[dir]:
continue
else:
dir = os.path.join(file_name, all_dir[dir])
print("需要运行的文件: %s" % dir)
run_main(dir) def start_single_loading():
run_main('demo', "test_*.py") if __name__ == '__main__':
# 记录运行时间
startTime = datetime.datetime.now()
print("\nStart Run Time: %s\n" % startTime)
# 指定case所在位置并自动运行位置下需要运行的test文件夹,并且每个文件夹都自动生成一个相应的html报告
start_loading_case()
# 指定需要运行的test文件夹,运行完毕之后只生成一个相应的html报告
# start_single_loading()
# 记录结束时间
stopTime = datetime.datetime.now()
print("\nFinish Run Time: %s\n" % stopTime)
# 打印一共运行的时间
print('\nRunning time: %s\n' % (stopTime - startTime), file=sys.stderr)

项目所在位置:

https://github.com/namexiaohuihui/demotest

个人记录而已,不理解的可以留言。请勿直接喷

unittest 运行slenium(五)---运行代码并生成HTMLTestRunner报告的更多相关文章

  1. 【python-HTMLTestRunner】生成HTMLTestRunner报告报错ERROR 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

    [python-HTMLTestRunner]生成HTMLTestRunner报告报错:ERROR 'ascii' codec can't decode byte 0xe5 in position 0 ...

  2. Python不生成HTMLTestRunner报告-转载学习

    1.问题:Python中同一个.py文件中同时用unittest框架和HtmlReport框架后,HtmlReport不被执行. 2.为什么?其实不是HtmlReport不被执行,也不是HtmlRep ...

  3. 如何生成HTMLTestRunner报告

    今天,学习了如何生成HTMLTestRunner测试报告. 接上篇文章,对于unittest框架,运行后,测试结果不便于查看,同时多个case存在的时候,可能会导致case result记录不正确的情 ...

  4. 用PyCharm执行测试成功但无法生成HTMLTestRunner报告

    问题:代码写的没问题,执行也成功了,但就是无法生成HTMLTestRunner的报告 其实这是编辑器搞得鬼,编辑器为了方便用户执行测试,都有一项功能,可以用编辑器来调用unittest或者nose来执 ...

  5. 关于python3 使用pycharm+unittest+html+HTMLTestRunner 测试用例运行正常,但却不能生成测试报告的解决方法

    关于python3 使用pycharm+unittest+html+HTMLTestRunner 测试用例运行正常,但却不能生成测试报告的解决方法 这个问题我也遇到过,以下是解决办法   该方法适用于 ...

  6. 程序的载入和运行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25

    程序的载入和运行(五)--<x86汇编语言:从实模式到保护模式>读书笔记25 前面几篇博文最终把代码分析完了.这篇就来说说代码的编译.运行和调试. 1.代码的编译及写入镜像文件 之前我们都 ...

  7. 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码

    不可否认,这次的标题有点长.之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解 GCC 生成 16 位实模式代码方法的朋友带到我的博客.先说一下背景,编写能在 x86 实模式下运行的 ...

  8. Jmeter非GUI运行,生成html报告

    一.JMete执行方式 JMeter执行方式有2种,一种是GUI模式,一种是非GUI模式.GUI模式就是界面模式,非GUI模式就是命令行模式.界面模式主要用来编写和调试脚本用的,项目的真正执行最好是采 ...

  9. iOS:xCode7版本运行xCode8.0的代码

    怎么在xCode7版本上运行xCode8.0的代码? 1.右键你的"LaunchScreen.sb"文件并用编辑器打开sb 2.删掉"<capability nam ...

随机推荐

  1. 宣化上人:大佛顶首楞严经四种清净明诲浅释(6-7)(转自学佛网:http://www.xuefo.net/nr/article23/230700.html)

    大佛顶首楞严经四种清净明诲浅释(6) 唐天竺·沙门般剌密帝译 宣化上人主讲 一九八三年四月十七日晚讲于万佛圣城 是故阿难!若不断杀修禅定者,譬如有人,自塞其耳,高声大叫,求人不闻,此等名为欲隐弥露.清 ...

  2. maven command line specified settings.xml

    1. using argument parameter --settings  / or -s for shot mvn install --settings c:\user\settings.xml ...

  3. 【TensorRT】自定义网络层的实现custom layers

    参考 1. Extending TensorRT With Custom Layers; 2. TensorRT Samples: MNIST(Plugin, add a custom layer); ...

  4. nodejs实现一个文件存储服务

    nodejs实现一个文件存储服务 模拟文件上传下载功能: PUT 上传一个文件,URL表示在服务器上待上传文件的路径. GET 下载一个文件,URL表示在服务器上待下载文件的路径.

  5. EXCEL 调整日期格式

    https://jingyan.baidu.com/article/647f0115ea31b67f2048a85a.html 先中数据(不带标题),点击菜单-数据-分列. 前2步不要做任何更改直接点 ...

  6. vue 的反向代理

    情景描述: 原本的vue打包文件是放在.net core 项目的www文件夹下去发布的.这样运行没问题,但是公司领导让服务器单独部署vue,前后端要完全分离.然后这样就出问题了,有一个上传接口的地址一 ...

  7. Brave浏览器

    Brave是基于Chromium的开源Web浏览器,具有更快的页面加载速度,并且默认情况下会阻止广告和跟踪器.整合了一些其它浏览器所没有的功能,其中包括被称为 Basic Attention Toke ...

  8. Terence’s Stuff: Why do we do research?

    This sound like a question best answered via a survey conducted by a body such as Vitae, an internat ...

  9. [转帖]TPC-C解析系列01_TPC-C benchmark测试介绍

    TPC-C解析系列01_TPC-C benchmark测试介绍 http://www.itpub.net/2019/10/08/3334/ 学习一下. 自从蚂蚁金服自研数据库OceanBase获得TP ...

  10. CentOS7 搭建 Consul 集群

    环境准备: ssh shell工具: 远程连接 三个CentOS示例: 部署集群 配置好各个实例之间的网络访问,以及ssh免密登录. 下载&上传: 1.下载 Consul: Download ...