New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

fixturefilehandler

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fixturefilehandler

This project helps you to vacate specific file path or deploy resource file into specific file path when unit testing.

  • 1.4.0
  • PyPI
  • Socket score

Maintainers
1

Fixture File Handler

Test Test Coverage Maintainability Code Climate technical debt Updates PyPI - Python Version PyPI - Downloads Twitter URL

This project helps you to vacate specific file path or deploy resource file into specific file path when unit testing.

Context

The most popular setup / teardown tasks about file system on unit testing is almost 2 kinds.

  1. vacate specific file path for testing file export function
  2. deploy fixture file / directory into specific file path for testing file import /export function

Then we have to think about how to back up existing file / directory between unit testing because maybe developer wants to keep those handwritten files for development.

Fixture File Handler is framework to realize simply implement the vacate and deploy actions while keeping the existing files. Of course, even if there is no file in the target path, it works fine.

Ubiquitous Language

target

The target file path to vacate or deploy file / directory for unit testing.

backup

The file path to back up existing file / directory on target file path between unit testing.

resource

The file / directory you want to deploy and let product code read / write in unit testing. It may test resource file or template file like *.dist file.

Basic behavior

Vacator

target pathbackup path
existing file /dir 

↓ setup

target pathbackup path
 existing file / dir

↓ teardown

target pathbackup path
existing file / dir 

Deployer

target pathbackup pathresource path
existing file / dir resource file / dir

↓ setup

target pathbackup pathresource path
resource file / direxisting file /dirresource file / dir

↓ teardown

target pathbackup pathresource path
existing file / dir resource file / dir

Common behavior

If file / directory already exists on backup path, setup raise BackupAlreadyExistError because it's unexpected situation and developer may want to resque those backup files.

Quickstart

1. Install

pip install fixturefilehandler

2-1. Case when unittest: implement setUp() and doCleanups()

from pathlib import Path
import unittest

from fixturefilehandler.factories import VacatorFactory
from fixturefilehandler.file_paths import RelativeVacateFilePath

VACATOR = VacatorFactory.create(
    RelativeVacateFilePath(
        Path('test.txt'),
        Path('test.txt.bak'),
        Path(__file__).parent
    )
)


class ConfigurableTestCase(unittest.TestCase):
    def setUp(self):
        VACATOR.setup()

    def doCleanups(self):
        VACATOR.teardown()

2-2. Case when pytest: implement fixture

from pathlib import Path
import pytest

from fixturefilehandler.factories import DeployerFactory
from fixturefilehandler.file_paths import RelativeDeployFilePath

DEPLOYER = DeployerFactory.create(
    RelativeDeployFilePath(
        Path('test.txt'),
        Path('test.txt.bak'),
        Path('testresources/test.txt.dist'),
        Path(__file__).parent
    )
)


@pytest.fixture
def fixture_file():
    DEPLOYER.setup()
    yield DEPLOYER.FILE_PATH
    DEPLOYER.teardown()


def test_something(fixture_file):
    """test something"""

API

file_paths

SimpleVacateFilePath

This instance holds path to target and backup. Each path is independent each other.

SimpleDeployFilePath

This instance holds path to target, backup, and resource. Each path is independent each other.

RelativeVacateFilePath

This instance holds path to target, backup, and base. Each path is relative based on base path.

RelativeDeployFilePath

This instance holds path to target, backup, resource, and base. Each path is relative based on base path.

How do I...

Use different paths for each test?

setup() and teardown() also accept file_paths argument.

Case when unittest:

from pathlib import Path

import unittest

from fixturefilehandler import ResourceFileDeployer
from fixturefilehandler.file_paths import RelativeDeployFilePath


class AdvancedConfigurableTestCase(unittest.TestCase):
    @property
    def file_path(self) -> RelativeDeployFilePath:
        return RelativeDeployFilePath(
            Path('test.txt'),
            Path('test.txt.bak'),
            Path(f'testresources/{self._testMethodName}.txt'),
            Path(__file__).parent
        )

    def setUp(self):
        ResourceFileDeployer.setup(self.file_path)

    def doCleanups(self):
        ResourceFileDeployer.teardown(self.file_path)

Case when pytest:

from pathlib import Path

import pytest

from fixturefilehandler import ResourceFileDeployer
from fixturefilehandler.file_paths import RelativeDeployFilePath


@pytest.fixture
def fixture_file_advanced(request):
    file_path = RelativeDeployFilePath(
        Path('test.txt'),
        Path('test.txt.bak'),
        Path(f'testresources/{request.node.name}.txt'),
        Path(__file__).parent
    )

    ResourceFileDeployer.setup(file_path)
    yield file_path
    ResourceFileDeployer.teardown(file_path)


def test_something(fixture_file_advanced):
    """test something"""

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc