返回: Pytest权威教程

使用tmp目录和文件

tmp_path Fixture方法

3.9版本新函数

你可以使用tmp_path 在临时目录根目录中创建一个独立的临时目录以供测试调用。

tmp_path是一个pathlib/pathlib2.Path对象。以下是测试使用方法的示例如:

  1. # test_tmp_path.py文件内容
  2. import os
  3. CONTENT = u"content"
  4. def test_create_file(tmp_path):
  5. d = tmp_path / "sub"
  6. d.mkdir()
  7. p = d / "hello.txt"
  8. p.write_text(CONTENT)
  9. assert p.read_text() == CONTENT
  10. assert len(list(tmp_path.iterdir())) == 1
  11. assert 0

运行这个,我们可以看到,除了assert 0这一行,其他断言都正常测试通过:

  1. $ pytest test_tmpdir.py
  2. =========================== test session starts ============================
  3. platform linux -- Python 3.x.y,pytest-4.x.y,py-1.x.y,pluggy-0.x.y
  4. rootdir: $REGENDOC_TMPDIR,inifile:
  5. collected 1 item
  6. test_tmpdir.py F [100%]
  7. ================================= FAILURES =================================
  8. _____________________________ test_create_file _____________________________
  9. tmpdir = local('PYTEST_TMPDIR/test_create_file0')
  10. def test_create_file(tmpdir):
  11. p = tmpdir.mkdir("sub").join("hello.txt")
  12. p.write("content")
  13. assert p.read() == "content"
  14. assert len(tmpdir.listdir()) == 1
  15. > assert 0
  16. E assert 0
  17. test_tmpdir.py:7: AssertionError
  18. ========================= 1 failed in 0.12 seconds =========================

tmp_path_factory Fixture方法

2.8版本新函数

tmpdir_factory是一个session范围的fixture,可用于从任何其他测试用例及fixture中创建任意临时目录。

例如,假设你的测试套件需要使用程序动态生成在本地磁盘上的一个大图片,你可以整个测试session中只生成一次以节省时间,而不是为每个用例都在自己的tmpdir中计算并生成一次:

  1. # conftest.py文件内容
  2. import pytest
  3. @pytest.fixture(scope="session")
  4. def image_file(tmpdir_factory):
  5. img = compute_expensive_image()
  6. fn = tmpdir_factory.mktemp("data").join("img.png")
  7. img.save(str(fn))
  8. return fn
  9. # contents of test_image.py
  10. def test_histogram(image_file):
  11. img = load_image(image_file)
  12. # 计算和测试histogram

有关详细信息,请参阅tmpdir_factory API。

tmpdir Fixture方法

tmpdir_factory Fixture方法

默认临时目录根目录

默认情况下,临时目录创建为系统临时目录的子目录。 基本名称将是pytest-数字,其中数字将随着每次测试运行而递增。 此外,第3个以后的临时目录会被删除。

你可以如下所示,修改默认的临时目录设置:

  1. pytest --basetemp=mydir

在本地计算机上分发测试时,pytest会为子进程配置临时目录根目录,以便所有临时数据都落在单个每个测试运行的临时目录根目录。

Pytest权威教程08-使用tmp目录和文件的更多相关文章

  1. Pytest权威教程(官方教程翻译)

    Pytest权威教程01-安装及入门 Pytest权威教程02-Pytest 使用及调用方法 Pytest权威教程03-原有TestSuite的执行方法 Pytest权威教程04-断言的编写和报告 P ...

  2. Pytest权威教程21-API参考-07-配置选项(Configuration Options)

    目录 配置选项(Configuration Options) addopts cache_dir confcutdir console_output_style doctest_encoding do ...

  3. Pytest权威教程11-模块及测试文件中集成doctest测试

    目录 模块及测试文件中集成doctest测试 编码 使用doctest选项 输出格式 pytest-specific 特性 返回: Pytest权威教程 模块及测试文件中集成doctest测试 编码 ...

  4. Pytest权威教程19-编写钩子(Hooks)方法函数

    目录 编写钩子(Hooks)函数 钩子函数验证和执行 firstresult: 遇到第一个有效(非None)结果返回 hookwrapper:在其他钩子函数周围执行 钩子(Hooks)函数排序/调用示 ...

  5. Pytest权威教程25-配置

    目录 配置 命令行选项和配置文件设置 初始化:确定ROOTDIR和INIFILE 寻找rootdir 如何更改命令行选项默认值 内置的配置文件选项 返回: Pytest权威教程 配置 命令行选项和配置 ...

  6. Pytest权威教程24-Pytest导入机制及系统路径

    目录 Pytest导入机制和sys.path/PYTHONPATH 包中的测试脚本及conftest.py文件 独立测试模块及conftest.py文件 调用通过python -m pytest调用p ...

  7. Pytest权威教程21-API参考-06-变量及异常

    目录 特殊变量(Special Variables) collect_ignore collect_ignore_glob pytest_plugins pytest_mark PYTEST_DONT ...

  8. Pytest权威教程21-API参考-05-对象(Objects)

    目录 对象(Objects) CallInfo Class Collector Config ExceptionInfo FixtureDef FSCollector Function Item Ma ...

  9. Pytest权威教程21-API参考-04-钩子(Hooks)

    目录 钩子(Hooks) 引导时的Hook方法 初始化时的Hook方法 测试运行时的Hook方法 收集用例时的Hook方法 生成测试结果时的Hook方法 调试/交互Hook方法 返回: Pytest权 ...

随机推荐

  1. java之struts2的action的创建方式

    首先action是用来处理请求的, 这里struts2中的action的3中创建方式. 1.无侵入性的创建方式. 无侵入性:使用第三方的框架,不直接继承或实现第三方提供的类或者接口就说是无侵入性的. ...

  2. NIO开发Http服务器(2):项目结构

    最近学习了Java NIO技术,觉得不能再去写一些Hello World的学习demo了,而且也不想再像学习IO时那样编写一个控制台(或者带界面)聊天室.我们是做WEB开发的,整天围着tomcat.n ...

  3. trie树(前缀树)详解——PHP代码实现

    trie树常用于搜索提示.如当输入一个网址,可以自动搜索出可能的选择.当没有完全匹配的搜索结果,可以返回前缀最相似的可能. 一.Tire树的基本性质 根节点不包含字符,除根节点外每一个节点都只包含一个 ...

  4. spring 自定义schema 加载异常 White spaces are required between publicId and systemId.

    spring 项目启动报错 报错日志如下: Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreExcepti ...

  5. Redis 学习-安装、数据类型与 API 理解、Java 客户端

    本博客是在学习<Redis从入门到高可用,分布式实践>教程时的笔记. 同时参考: https://www.cnblogs.com/jiang910/p/10020048.html 一.Re ...

  6. MySQL Replication--开启GTID模式下匿名事务异常

    错误环境: OS: CentOS release 6.5 (Final) MySQL: MySQL 5.7.19 主从参数配置: master_info_repository = TABLE rela ...

  7. Find 命令记录

    当需要查找一个时间的文件时 使用find [文件目录] -mtime [时间] 例如:查看mysql.bak目录下的1天前的文件 find mysql.bak -mtime 找到此文件之后需要将它移动 ...

  8. 数据库类型对应Java语言类型表

    下表列出了基本 SQL Server.JDBC 和 Java 编程语言数据类型之间的默认映射: SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型 big ...

  9. @ConfigurationProperties绑定配置信息至Array、List、Map、Bean

    原文:https://blog.csdn.net/justry_deng/article/details/90758250 相关说明:在SpringBoot中,我们可以通过以下几种方式获取并绑定配置文 ...

  10. linux 下安装node 并使用nginx做域名绑定

    #1 ,home目录下 下载nodejs安装包,解压 并修改文件夹名称 wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar. ...