# 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地址,要有一个端口,并且有协议,当前是显示某某盘,是以本地形式启动,所以拿不到数据。
运行之后能看到我们测试的数据
结语
本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。