Skip to main content

Implements a fake file system that mocks the Python file system modules.

Project description

pyfakefs PyPI version Python version Testsuite Documentation Status pre-commit.ci status PyPI - Downloads

pyfakefs implements a fake file system that mocks the Python file system modules. Using pyfakefs, your tests operate on a fake file system in memory without touching the real disk. The software under test requires no modification to work with pyfakefs.

pyfakefs creates a new empty in-memory file system at each test start, which replaces the real filesystem during the test. Think of pyfakefs as making a per-test temporary directory, except for an entire file system.

pyfakefs is tested with current versions of Linux, Windows and macOS.

Usage

There are several ways to invoke pyfakefs:

  • using the fs fixture with pytest
  • deriving from fake_filesystem_unittest.TestCase for unittest
  • using fake_filesystem_unittest.Patcher as context manager
  • using the fake_filesystem_unittest.patchfs decorator on a single test

Refer to the usage documentation for more information.

Documentation

Features

Apart from automatically mocking most file-system functions, pyfakefs provides some additional features:

  • mapping files and directories from the real file system into the fake filesystem
  • configuration and tracking of the file system size
  • pause and resume of patching to be able to use the real file system inside a test step
  • (limited) emulation of other OSes (Linux, macOS or Windows)
  • configuration to behave as if running as a non-root user while running under root

Limitations

pyfakefs will not work with Python libraries that use C libraries to access the file system. This is because pyfakefs cannot patch the underlying C libraries' file access functions--the C libraries will always access the real file system. Refer to the documentation for more information about the limitations of pyfakefs.

History

pyfakefs.py was initially developed at Google by Mike Bland as a modest fake implementation of core Python modules. It was introduced to all of Google in September 2006. At last count, pyfakefs was used in over 20,000 Python tests at Google.

Google released pyfakefs to the public in 2011 as a Google Code project. Support for unittest and doctest was added in a fork by user jmcgeheeiv, further corrections were made in a separate fork with user shiffdane, and after the shutdown of Google Code was announced, John McGehee merged all three Google Code projects together here on GitHub. In 2022, the repository has been transferred to pytest-dev to ensure continuous maintenance.

Project details


Release history Release notifications | RSS feed

This version

6.1.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfakefs-6.1.1.tar.gz (226.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfakefs-6.1.1-py3-none-any.whl (239.6 kB view details)

Uploaded Python 3

File details

Details for the file pyfakefs-6.1.1.tar.gz.

File metadata

  • Download URL: pyfakefs-6.1.1.tar.gz
  • Upload date:
  • Size: 226.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyfakefs-6.1.1.tar.gz
Algorithm Hash digest
SHA256 1c166fdba85f3f288f89b2a410e05712914d1f7ea77b920e960fe0cbbea1294d
MD5 7c46d335677026e194fa8ef778905544
BLAKE2b-256 4384843a50cfde48d6004cbf540b38b82a39737273cc76b51da6b456fea75de0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfakefs-6.1.1.tar.gz:

Publisher: release-deploy.yml on pytest-dev/pyfakefs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyfakefs-6.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyfakefs-6.1.1-py3-none-any.whl
  • Upload date:
  • Size: 239.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyfakefs-6.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e2c30fd0b7736ba03785bbc20b86de2312623cf7a11a7de334042ab0de23d46f
MD5 7d23fd684b29edc94c478689db3966d4
BLAKE2b-256 a5e21d74c7663aa38e405c25a30c26e8a1b92c06f8947118b9617042f4290ade

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfakefs-6.1.1-py3-none-any.whl:

Publisher: release-deploy.yml on pytest-dev/pyfakefs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page