pytest内置fixture使用临时目录流程详解

目录
  • 前言
  • tmpdir
  • tmpdir_factory
  • tmp_path
  • tmp_path_factory
  • 指定临时目录

前言

本篇来学习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')

到此这篇关于pytest内置fixture使用临时目录流程详解的文章就介绍到这了,更多相关pytest fixture临时目录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • pytest官方文档解读fixtures

    目录 一.测试的构成 二.回到fixtures本身 在深入了解fixture之前,让我们先看看什么是测试. 一.测试的构成 其实说白了,测试就是在特定的环境.特定的场景下.执行特定的行为,然后确认结果与期望的是否一致. 就拿最常见的登录来说,完成一次正常的登录场景,需要可用的测试环境,可以正常登录的账号和密码.然后,用这个账号密码进行登录操作,结果登录成功,符合这次正常登录场景的预期结果,测试完成. 这样看来,通常就可以把测试分为4个步骤: Arrange Act Assert Cleanup

  • pytest解读一次请求多个fixtures及多次请求

    目录 一.一个测试函数/fixture一次请求多个fixture 二.每个测试函数可以多次请求fixtures(返回值被缓存) 跟着节奏继续来探索fixtures的灵活性. 一.一个测试函数/fixture一次请求多个fixture 在测试函数和fixture函数中,每一次并不局限于请求一个fixture.他们想要多少就可以要多少. 下面是另一个简单的例子: import pytest # Arrange @pytest.fixture def first_entry(): return "a&

  • pytest使用parametrize将参数化变量传递到fixture

    目录 一.交代应用场景 二.使用@pytest.mark.parametrize.以及fixture的调用来解决 1. /demo_top/conftest.py 2. /demo_top/demo_sub/conftest.py 3. /demo_top/demo_sub/test_case.py 参数传递 fixture调用fixture 分享一个关于在pytest中,如何将测试用例文件中的变量传递到fixture函数. 一.交代应用场景 目前组内的项目,在根目录下是有一个conftest.

  • pytest-fixture简介及其用法讲解

    目录 什么是fixture 如何使用fixture 使用fixture传递测试数据 使用fixture来执行配置和销毁逻辑 fixture可以使用其他的fixture fixture的参数介绍 params,fixture的参化 autouse,为常用的fixture添加autouse选项 name,为fixture重命名 PS: 什么是fixture 在一个测试过程中,fixture主要提供以下功能: 为测试提供上下文,比如环境变量,数据集(dataset),提供数据,数据和测试用例分开定义测

  • pytest接口测试之fixture传参数request的使用

    目录 前言 一.函数传参 request参数 request传两个参数 前言 有的测试用例,需要依赖于某些特定的case才可以执行,比如登录获取到token,后面的请求都需要带着,为了确保在同一用户,必须带着和登录时获取的cookies. 大部分的用例都会先登录,就需要把登录单独抽出来写个函数,其他用例全部调用这个登录函数就行,但是登录的账号不能写死. 一.函数传参 单独写个登录函数,传2个参数user和password,写用例的时候调用登录函数,输入几组user.password参数化.需要用

  • Pytest框架之fixture的详细使用教程

    前言 前面一篇讲了setup.teardown可以实现在执行用例前或结束后加入一些操作,但这种都是针对整个脚本全局生效的 如果有以下场景:用例 1 需要先登录,用例 2 不需要登录,用例 3 需要先登录.很显然无法用 setup 和 teardown 来实现了fixture可以让我们自定义测试用例的前置条件 fixture优势 命名方式灵活,不局限于 setup 和teardown 这几个命名 conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture sc

  • pytest内置fixture使用临时目录流程详解

    目录 前言 tmpdir tmpdir_factory tmp_path tmp_path_factory 指定临时目录 前言 本篇来学习pytest中内置fixture中临时目录的使用 tmpdir tmpdir作用范围是函数级别,创建临时文件供单个测试点调用 # -*- coding: utf-8 -*- import os def test_tmpdir(tmpdir): """内置tmpdir fixture使用""" # 创建临时文件

  • JS内置对象和Math对象知识点详解

    Math对象 <script> // Math数学对象 不是一个构造函数 ,所以我们不需要new 来调用 而是直接使用里面的属性和方法即可 console.log(Math.PI); // 一个属性 圆周率 console.log(Math.max(1, 99, 3)); // 99 console.log(Math.max(-1, -10)); // -1 console.log(Math.max(1, 99, 'pink老师')); // NaN console.log(Math.max(

  • Python3内置json模块编码解码方法详解

    目录 JSON简介 dumps编码 编码字典 编码列表 编码字符串 格式化输出JSON 转换关系对照表 loads解码 总结 JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,在接口数据开发和传输中非常常用. Python3中我们利用内置模块json解码和编码JSON对象.jso

  • vue 内置组件 component 的用法示例详解

    目录 component is 内置组件切换方法一: component is 内置组件切换方法二: component is 内置组件切换方法一: component组件(单独拿出一个组件来专门进行切换使用) 使用is来绑定你的组件:如下面的reviewedPlan planDetailsList attachmentList等引入的组件名 changeViewFun 是用来切换组件的方法 通过给is绑定的currentView来实现切换组件 pathUrl就是当前的路由 <template>

  • SpringBoot 3.0 新特性内置声明式HTTP客户端实例详解

    目录 http interface 什么是声明式客户端 测试使用 1. maven 依赖 2. 创建 Http interface 类型 3. 注入声明式客户端 4. 单元测试调用 http interface http interface 从 Spring 6 和 Spring Boot 3 开始,Spring 框架支持将远程 HTTP 服务代理成带有特定注解的 Java http interface.类似的库,如 OpenFeign 和 Retrofit 仍然可以使用,但 http inte

  • awk正则表达式和内置函数的使用方法实例详解

    awk正则表达式及内置函数实例详解: 1.模糊匹配: 复制代码 代码如下: awk '{if($3~/97/) print $0}' data.f:如果第三项中含有"97"则打印该行 awk '{if($4!~/ufcx/) print $0}' data.f:如果第三项中不含ufcx有则打印 2.精确匹配: 复制代码 代码如下: awk '{if($5==66) print $0}' data.f:如果第五项是66则打印 awk '{if($5!=66)print $0}' data

  • Python 内置函数globals()和locals()对比详解

    这篇文章主要介绍了Python globals()和locals()对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python的两个内置函数,globals()和locals() ,它们提供了基于字典的访问局部和全局变量的方式. globals()是可写的,即,可修改该字典中的键值,可新增和删除键值对. 而locals()是不可修改字典中已存在的键值的,也不能pop移除键值对,但是可以新增键值对. Demo: a = 1 # 定义一个

  • Python中内置的日志模块logging用法详解

    logging模块简介 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式. logging模块与log4j的机制是一样的,只是具体的实现细节不同.模块提供logger,handler,filter,formatter. logger:提供日志接口,供应用代码使用.logger最长用的操作有两类:配置和发

  • vue内置组件transition简单原理图文详解(小结)

    基本概念 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.css 在过渡钩子函数中使用 JavaScript 直接操作 DOM 可以配合使用第三方 JavaScript 动画库,如 Velocity.js 简单用法 用 v-if/v-show 控制显示隐藏,使用transition 组件控制其变化过程 一个页面子组件 router-view 的消失隐藏,使用transi

  • pytest文档内置fixture的request详情

    目录 前言 一.FixtureRequest 二.request.param 三.request.config 四.request.module 五.request的相关成员对象 前言 request 是 pytest 的内置 fixture , "为请求对象提供对请求测试上下文的访问权,并且在fixture被间接参数化的情况下具有可选的“param”属性."这是官方文档对request的描述,可参考的文档不多. 一.FixtureRequest FixtureRequest 是来自

随机推荐