pytest的使用

# pytest的使用


嗨!收到一张超级美丽的风景图,愿你每天都能顺心!

在这里插入图片描述

前言

这篇文章是继上一篇文章 python pytest测试框架 写的。

pytest进阶

conftest + fixture结合使用(全局应用)

Pytest支持在测试的目录中,创建conftest.py文件,进行全局fixture配置使用

1、conftest.py文件名是固定的不能修改,文件放在项目根目录下

import pytest
​
@pytest.fixture()
def my_fixture(request):
    print("开始测试")
    yield request.param
    print("测试结束")

上一篇文章这里讲了,这里就不左过多赘述了。


日志使用

在项目根目录下创建一个目录,把log_util.py文件放在下面

需要使用日志记录的地方,调用函数写入记录信息即可


我们运行文件后,文件的结果是不是只会在我们的控制台显示,我们一但把控制台关掉,这个结果之不是看不到了,这个时候就需要用到我们的日志使用,来记录运行后的结果。
在这里插入图片描述

一旦我们关闭控制台,开始执行与执行结束就不会被保存下来,用日志的方式记录何时执行,何时结束。


接下来我们就来写一个py文件

import logging
import time
import os


def log_operation():
    # 获取项目的路径
    log_path = os.getcwd() + '\\log_dir\\'
    # 判断并创建日志目录
    if not os.path.exists(log_path):
        os.makedirs(log_path)

    # 初始化日志器对象
    lo = logging.getLogger('lo')
    # 设置日志级别
    lo.setLevel(logging.INFO)
    if not lo.handlers:  # 处理日志重复输出
        file_handler = logging.FileHandler(log_path + '{}.log'.format(time.strftime("%Y%m%d%H%M%S")))
        # 创建格式器,处理日志的器的格式
        gsq = logging.Formatter(fmt='%(asctime)s %(levelname)s [%(filename)s:%(lineno)d]: %(message)s',
                                datefmt='%Y-%m-%d %H:%M:%S')

        # 给处理器设置格式
        file_handler.setFormatter(gsq)
        # 把处理器添加到日志中才能展示
        lo.addHandler(file_handler)
    return lo

这段代码是用于创建一个日志文件并设置日志格式的。首先,它会获取当前项目的路径,并在该路径下创建一个名为"log_dir"的文件夹(如果不存在)。然后,它会初始化一个名为"lo"的日志器对象,并设置日志级别为INFO。接下来,它会检查日志器是否已经有处理器,如果没有,则创建一个文件处理器,将日志文件命名为当前时间戳加上.log后缀。最后,它会创建一个格式器,设置日志的格式,并将格式器应用到文件处理器上,然后将文件处理器添加到日志器中。

在这里插入图片描述

这样我们在重新运行一次
在这里插入图片描述

打开建立的文本文档,可以看到什么时间段执行,什么时间段完成。

pytest之allure测试报告

我们最终运行了代码是要生成一个报告,记录当前运行的有哪些,运行了多少,有哪些成功的,有哪些失败的比例怎么样,运行时间怎么样,输出日志信息怎么样,需要从几个维度去记录运行结果。我们需要借助于一个插件。

allure是一个命令行工具 需要下载
点击此处下载allure
在这里插入图片描述

在这里插入图片描述

接下来我们要安装jdk并配置环境变量。
为什么要安装jdk呢?因为我们用的是一个第三方的插件,对Java有所了解的都应该知道
在这里插入图片描述

这些是Java工具包运行的基本配置,如果安装了jdk,之一步可以省略

之后再配置我们allure的环境变量
在这里插入图片描述

allure监听器在测试执行期间会收集结果,allure 生成测试报告需要2步:

(第1步)在配置文件中加入执行参数

打开pytest.ini
将第一行改为:addopts = -vs --disable-warnings --alluredir ./Report/tmp --clean-alluredir

(第2步)创建一个Report目录,在run文件中写入执行命令

在这里插入图片描述

由于我写的是Report,所以这里创建Report目录,如果你写的是其他路径也可以更改。

import pytest
import os
​
​
if __name__ == '__main__':
    pytest.main()
    # 调用os模块执行,allure命令生成html格式的测试报告
    os.system('allure generate -c ./Report/tmp/  -o ./Report/new_report')

我们这个指令实际是在cmd窗口实现的,由于代码层面,所以我们借助os去操作我们的cmd去输入那串指令。

在这里插入图片描述

注意:我们不能找到文件直接打开,不然会显示
加载或者404,如下图所示
在这里插入图片描述

在这里插入图片描述

这是为什么加载不了数据呢?由于我们是通过指令生成的,它要读数据的时候必须要以服务的形式启动。什么是以服务的形式启动,访问的文件前面必须要有一个IP地址,要有一个端口,并且有协议,当前是显示某某盘,是以本地形式启动,所以拿不到数据。

在这里插入图片描述

运行之后能看到我们测试的数据
在这里插入图片描述

结语

本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值