pytest内置fixture使用临时目录流程详解
作者:爱学习de测试小白 发布时间:2021-12-27 06:49:23
标签:pytest,fixture,临时目录
前言
本篇来学习pytest中内置fixture中临时目录的使用
tmpdir
tmpdir作用范围是函数级别,创建临时文件供单个测试点调用
# -*- coding: utf-8 -*-
import os
def test_tmpdir(tmpdir):
"""内置tmpdir fixture使用"""
# 创建临时文件
a_file = tmpdir.join('a.txt')
# 写入内容
a_file.write('A')
# 创建临时目录
a_sub_dir = tmpdir.mkdir('sub')
sub_file = a_sub_dir.join('sub.txt')
sub_file.write('sub')
# 打印临时目录路径
print(f"tmpdir:{a_file}")
print(f"tmpdir:{a_sub_dir}")
assert a_file.read() == 'A'
assert sub_file.read() == 'sub'
if __name__ == '__main__':
os.system('pytest -s -v')
tmpdir_factory
tmpdir_factory作用范围是会话级别,主要针对创建临时目录的情况,可供多个测试点调用
# -*- coding: utf-8 -*-
import os
def test_create_file(tmpdir_factory):
p = tmpdir_factory.mktemp("demo01").join("hello.txt")
print(f"tmpdir:{p}")
p.write("content")
assert p.read() == "content"
def test_create_file2(tmpdir_factory):
p = tmpdir_factory.mktemp("demo02").join("hello.txt")
print(f"tmpdir:{p}")
p.write("content")
assert p.read() == "content"
if __name__ == '__main__':
os.system('pytest -s -v')
tmp_path
测试用例级别,tmpdir 和tmp_path功能是一样的,唯一区别是tmpdir返回的是py.path.local类型,而tmp_path返回的是pathlib.Path类型
# -*- coding: utf-8 -*-
import os
def test_create_file_path(tmp_path):
"""临时路径"""
d = tmp_path / "sub"
print(f"temp_dir:{d}")
d.mkdir()
p = d / "hello.txt"
str_txt = "hello world"
p.write_text(str_txt)
assert p.read_text() == str_txt
assert len(list(tmp_path.iterdir())) == 1
if __name__ == '__main__':
os.system('pytest -s -v')
tmp_path_factory
会话级别
# -*- coding: utf-8 -*-
import os
def test_create_file_path_factory(tmp_path_factory):
"""临时路径 会话级"""
d = tmp_path_factory.mktemp("demo01") / "hello.txt"
print(f"temp_dir:{d}")
str_txt = "hello world"
d.write_text(str_txt)
assert d.read_text() == str_txt
def test_create_file2_path_factory(tmp_path_factory):
d = tmp_path_factory.mktemp("demo02") / "hello.txt"
print(f"temp_dir:{d}")
str_txt = "hello world"
d.write_text(str_txt)
assert d.read_text() == str_txt
if __name__ == '__main__':
os.system('pytest -s -v')
指定临时目录
–basetemp = 临时路径
# -*- coding: utf-8 -*-
import os
def test_create_file_path(tmp_path):
"""临时路径"""
d = tmp_path / "sub"
print(f"temp_dir:{d}")
d.mkdir()
p = d / "hello.txt"
str_txt = "hello world"
p.write_text(str_txt)
assert p.read_text() == str_txt
assert len(list(tmp_path.iterdir())) == 1
if __name__ == '__main__':
# 指定临时目录,确认为空目录 否则会被清空
os.system('pytest -s -v --basetemp=./test_tmp')
来源:https://blog.csdn.net/IT_heima/article/details/127435971


猜你喜欢
- 意思就是画四条直线,四条直线都不能相交即可。#!/usr/bin/python#coding: UTF-8import turtleimpo
- 一、Tesseract-OCR 是什么An OCR Engine that was developed at HP Labs between
- group by函数应该的使用应该是SELECT 列表中指定的每一列也必须出现在 GROUP BY 子句中,除非这列是用于聚合函数,但是今天
- 首先说明下范围用Javascript来开发WEB页面的动画效果该思路同时考虑页面效率、SEO,如果数据大,也可以缓解后端压力。这个是程序设计
- 介绍:pyenv-virtualenv是pyenv的一个插件,作用如同virtualenv一样,是用来管理虚拟环境的,配合pyenv主体使用
- 本文假设你在 GitHub 上已经有一个想要打包和发布的项目。第 0 步:获取项目许可证在做其他事之前,由于你的项目要开源,因此应该有一个许
- 就服务器端处理而言,ASP是产生动态Web网页的一种相对较新的技术。动态页意味着什么呢?先暂时不考虑客户端相关功能上的进展,也不讨论客户端脚
- 本文实例讲述了Python使用re模块实现信息筛选的方法。分享给大家供大家参考,具体如下:背景平时工作中,我们经常会处理大量的元数据(Raw
- 现在有一个横向的IFRAME,需要通过点击iframe外的一个图片来横向滚动iframe内的一个html页,但又不想让看见iframe的滚动
- 这个小技巧在工作当中是非常实用而且经常用到的 希望小伙伴儿们能学到。先看看效果图吧接下来我们看看怎么实现的吧在methods中写
- 算法简介SOM网络是一种竞争学习型的无监督神经网络,将高维空间中相似的样本点映射到网络输出层中的邻近神经元。训练过程简述:在接收到训练样本后
- 本文实例为大家分享了js实现九宫格抽奖的具体代码,供大家参考,具体内容如下<div id="contaner"&g
- 在mysql网站时拿到的rpm包只能用root安装,不支持relocate用源码安装后./configure --prefix=/home/
- 前言如果大家在网上搜索Python 正则表达式,你将会看到大量的垃圾文章会这样写代码:import repattern = re.compi
- 在蓝色看到的几个js日历代码,整理了一下。大家可以用在blog上,或者可以用在表单的日期类型的数据选择中,方便大家填写日期。1.动感的日历,
- 1 任务需求  首先,我们来明确一下本文所需实现的需求。  现有一个
- 用来批量切割视频的开头部分,比如去掉一部电视剧的序幕,看着难受不说数量还很多,很菜鸟的一篇,毕竟我也是一个菜鸟,首先要有ffmpeg这个软件
- 在服务器上生成动态内容是使用ASP最主要的原因之一,所以我们选择的第一个测试项目是确定把动态内容发送到应答流使用什么方法最好。基本的选择有两
- 对象的创建模式Object 构造函数模式:先创建空对象,再动态添加属性和方法。适用场景:初始时对象内部数据不确定。存在问题:语句太多(这个问
- 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取