首页 > 编程语言 >记一次 python+allure 的学习

记一次 python+allure 的学习

时间:2023-02-28 16:57:46浏览次数:51  
标签:logging log get python 学习 allure path os

1、allure 下载 地址:https://github.com/allure-framework/allure2/releases

 

下载完成后,配置window的环境变量,到bin目录 配置完成后,cmd命令窗口输入以下命令,检查是否安装成功 allure --version   基本用法
# Allure监听器在测试执行期间会收集结果,只需添加alluredir选项,并选择输出的文件路径即可。 
pytest --alluredir=./allure-results

# 执行此命令,将在默认浏览器中显示生成的报告
 allure serve ./allure-results 

# 命令行输入allure generate -c -o allure-reports,即可在当前路径下生成测试报告 (-c:清空历史数据,-o:指定输出测试报告路径) 

# 使用allure serve allure-results,则会在系统默认目录下生成测试报告
 

 

Allure注解说明

 

2、安装依赖包
pip3 install allure-pytest 
pip3 install pytest_html 
pip3 install pytest
3、使用
# test_allure.py

def run(*args):
    # 测试用例目录
    alluredir = os.path.join(GetPathInfo().get_project_path(), 'reports', 'allure_raw')
    allure_report = os.path.join(GetPathInfo().get_project_path(), 'reports', 'allure_report')
    htmldir = os.path.join(GetPathInfo().get_project_path(), 'reports', 'html')
    # 执行参数
    param = ['-s', '-v',
        '--cache-clear', # 清除缓存
        f'--html={htmldir}/report.html', # 生成html报告
        f'--alluredir={alluredir}', # 生成allure报告
    ]

    try:
        for i in args:
            param.append(i)  # 添加指定执行测试脚本列表
    except IndexError as e:
        log.error(e)
        log.error('自定义测试套件不存在')

    print('param=', param)
    pytest.main(param)  # 执行测试
    os.system(f'allure generate {alluredir} -o {allure_report} --clean')  # 通过allure插件,生成测试报告
   
if __name__ == '__main__':
    path = os.path.join(GetPathInfo().get_project_path() + 'demo', 'CASE02_WORK')
    run(path)
    
# get_path_info.py

import os
class GetPathInfo:
    def get_project_path(self):
        """ 获取项目根路径 """
        return os.path.split(os.path.split(os.path.realpath(__file__))[0])[0] + "\\"
        
# get_logger.py

class GetLogger(object):
    @classmethod
    def get_logger(clsc):
        log = logging.getLogger(__name__)  # 不会打印 HTTP General 信息
        # log = logging.getLogger()
        level_relations = {
            'NOTSET': logging.NOTSET,
            'DEBUG': logging.DEBUG,
            'INFO': logging.INFO,
            'WARNING': logging.WARNING,
            'ERROR': logging.ERROR,
            'CRITICAL': logging.CRITICAL
        }  # 日志级别关系映射

        # 创建日志存放的目录
        project_path = GetPathInfo().get_project_path()  # get_project_path()获取项目根目录

        logs_dir = project_path + "logs"
        if os.path.exists(logs_dir) and os.path.isdir(logs_dir):
            pass
        else:
            os.mkdir(logs_dir)
        # 日志文件以日期命名
        log_file_name = '%s.log' % time.strftime("%Y-%m-%d", time.localtime())
        log_file_path = os.path.join(logs_dir, log_file_name)

        rotating_file_handler = handlers.TimedRotatingFileHandler(filename=log_file_path,
                                                                  when='D',  # 按天分隔,一天一个文件
                                                                  interval=30,
                                                                  encoding='utf-8')
        log_colors_config = {'DEBUG': 'white',
                             'INFO': 'cyan',
                             'WARNING': 'yellow',
                             'ERROR': 'red',
                             'CRITICAL': 'bold_red'}
        # 日志输出格式
        fmt = "%(asctime)s %(levelname)s %(pathname)s [%(lineno)d]:%(message)s"
        # fmt = "%(name)s %(asctime)s %(created)f %(relativeCreated)d %(msecs)d %(levelname)s %(levelno)s %(pathname)s %(filename)s %(module)s %(funcName)s %(lineno)d %(process)d %(thread)d %(threadName)s %(message)s"
        # formatter = logging.Formatter(fmt)
        formatter = ColoredFormatter(fmt)
        rotating_file_handler.setFormatter(formatter)

        # 加上判断,避免重复打印日志
        if not log.handlers:
            # 控制台输出
            console = logging.StreamHandler()
            console.setLevel(level_relations["NOTSET"])
            console.setFormatter(formatter)
            # 写入日志文件
            log.addHandler(rotating_file_handler)
            log.addHandler(console)
            log.setLevel(level_relations['DEBUG'])
        return log

4、执行完后,会再report目录下,生成测试报告

可以通过浏览器,直接打开allure_report目录下的index.html,文件查看测试报告 另外,也可以通过执行命令,查看测试报告
allure open [报告目录]
allure open .\reports\allure_report

 

注:直接打开报告的index.html文件,有可能会出现 loading 或者 404(如下图),所以最好使用命令方式打开 allure open [报告目录]  

 

   

标签:logging,log,get,python,学习,allure,path,os
From: https://www.cnblogs.com/tangoliver/p/17165040.html

相关文章

  • 【学习笔记】springmvc接收参数
    springmvc接收参数springmvc接收前端传来的数据,主要有三种情况:传来的参数名与处理方法的参数名一致、传来的参数名与处理方法的参数名不一致、传来的参数与已有的对象的属......
  • Python 之 lambda 函数
    一、lambda语法lambda函数的语法只包含一个语句,表现形式如下:lambda[arg1[,arg2,.....argn]]:expression二、lambda特性lambda函数是匿名的;lambda函数有输入和输......
  • 《渗透测试》学习随笔 day4
    思维导图 1 常规的Web应用搭建:(1)购买云服务器,购买域名(2)云服务器去搭建中间件(3)下载并上传Web程序源码(4)添加网站并绑定域名目录2子域名模式www.xiaod......
  • 汇编语言学习_3_计算字符串长度
    第三节计算字符串长度翻译自:https://asmtutor.com/背景知识为什么我们需要计算字符串的长度?好吧,sys_write要求我们向它传递一个指向我们要在内存中输出的字符串的指......
  • 汇编语言学习_4_函数
    第四节函数翻译自:https://asmtutor.com/介绍函数(子程序)函数/子程序(functions/subroutines)是可重用的代码片段,程序可以调用它们来执行各种可重复的任务。函数是使......
  • 记一次 python+allure 的学习
    1、allure下载地址:https://github.com/allure-framework/allure2/releases 下载完成后,配置window的环境变量,到bin目录 配置完成后,cmd命令窗口输入以下命令,检......
  • MogDB 学习笔记之 -- 索引失效
    [[toc]]#概念描述哪些操作会导致分区表的全局索引失效(比如movepartition,droppartition,truncatepartition,splitpartition,mergepartitions)#测试验证1、环境准......
  • JAVA基础学习
    学习记录第一部分Java基础第一章Java概述程序:为执行某些操作或解决某个问题而编写的一系列有序指令的集合。1.java重要特点面向对象(OOP)健壮跨平台性(一次编译......
  • MogDB 学习笔记之 -- PITR恢复
    #概念描述##背景信息当数据库崩溃或希望回退到数据库之前的某一状态时,MogDB的即时恢复功能(Point-In-TimeRecovery,简称PITR)可以支持恢复到备份归档数据之后的任意时间点......
  • CCZ——python压缩纹理成ccz
    python压缩纹理资源===>cczimportosimportstructimportzlibdefccz(inputFile,outputFile,width,height):ifnotos.path.exists(inputFile):......