Bird
Raised Fist0
PyTesttesting~5 mins

tmp_path and tmp_path_factory in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is tmp_path in pytest?

tmp_path is a built-in pytest fixture that provides a temporary directory as a pathlib.Path object for tests to use. It is unique for each test and is deleted after the test finishes.

Click to reveal answer
intermediate
How does tmp_path_factory differ from tmp_path?

tmp_path_factory is a pytest fixture that allows you to create multiple temporary directories during a test session. It is useful when you need more than one temporary directory, unlike tmp_path which provides only one per test.

Click to reveal answer
intermediate
How do you create a new temporary directory using tmp_path_factory?

You call tmp_path_factory.mktemp('name') to create a new temporary directory with the given name prefix. It returns a pathlib.Path object pointing to the new directory.

Click to reveal answer
beginner
Why is it better to use tmp_path or tmp_path_factory instead of hardcoding temp directories in tests?

Using tmp_path or tmp_path_factory ensures tests run in isolated, unique temporary directories. This avoids conflicts, keeps tests independent, and cleans up automatically after tests finish.

Click to reveal answer
beginner
What type of object do tmp_path and tmp_path_factory provide for temporary directories?

Both provide pathlib.Path objects, which are easy to use for file and directory operations in Python tests.

Click to reveal answer
What does the pytest fixture tmp_path provide?
AA permanent directory shared across tests
BA temporary directory as a pathlib.Path object unique to each test
CA temporary file object
DA database connection
Which pytest fixture allows creating multiple temporary directories during a test session?
Atmp_dir
Btmp_path
Ctmp_file
Dtmp_path_factory
How do you create a new temporary directory named 'data' using tmp_path_factory?
Atmp_path_factory.mktemp('data')
Btmp_path_factory.make('data')
Ctmp_path_factory.new_dir('data')
Dtmp_path_factory.create('data')
What type of object do tmp_path and tmp_path_factory return?
Apathlib.Path
Bos.DirEntry
Cstr
Dfile object
Why should tests use tmp_path instead of hardcoded temp directories?
ATo use less memory
BTo speed up tests
CTo avoid conflicts and ensure cleanup
DTo connect to a database
Explain how tmp_path and tmp_path_factory help manage temporary directories in pytest tests.
Think about how tests need isolated folders to avoid conflicts.
You got /4 concepts.
    Describe the steps to create and use a new temporary directory inside a test using tmp_path_factory.
    Focus on the method to create directories and how to use the path.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the tmp_path fixture in pytest?
      easy
      A. To provide a unique temporary directory for each test function
      B. To create multiple temporary directories during a single test
      C. To permanently store test files after tests finish
      D. To mock file system calls without creating real files

      Solution

      1. Step 1: Understand the role of tmp_path

        The tmp_path fixture gives each test a fresh temporary directory to use.
      2. Step 2: Compare with other options

        It does not create multiple directories per test (that's tmp_path_factory), nor does it store files permanently or mock file calls.
      3. Final Answer:

        To provide a unique temporary directory for each test function -> Option A
      4. Quick Check:

        tmp_path = unique temp folder per test [OK]
      Hint: Remember: tmp_path = one temp folder per test [OK]
      Common Mistakes:
      • Confusing tmp_path with tmp_path_factory
      • Thinking tmp_path stores files permanently
      • Assuming tmp_path mocks file system calls
      2. Which of the following is the correct way to use tmp_path_factory to create a new temporary directory named 'data' inside a test?
      easy
      A. new_dir = tmp_path_factory.make_directory('data')
      B. new_dir = tmp_path_factory.create_temp('data')
      C. new_dir = tmp_path_factory.tempdir('data')
      D. new_dir = tmp_path_factory.mktemp('data')

      Solution

      1. Step 1: Recall the correct method name

        The method to create a new temporary directory with tmp_path_factory is mktemp().
      2. Step 2: Verify method usage

        Calling tmp_path_factory.mktemp('data') creates a temp directory named 'data'. Other options are not valid pytest methods.
      3. Final Answer:

        new_dir = tmp_path_factory.mktemp('data') -> Option D
      4. Quick Check:

        mktemp() creates temp dirs [OK]
      Hint: Use mktemp() method to create temp dirs with tmp_path_factory [OK]
      Common Mistakes:
      • Using incorrect method names like create_temp or tempdir
      • Trying to call make_directory which doesn't exist
      • Confusing tmp_path and tmp_path_factory usage
      3. Given the following pytest test code, what will be the output of the assertion?
      def test_create_file(tmp_path):
          file = tmp_path / 'test.txt'
          file.write_text('hello')
          content = file.read_text()
          assert content == 'hello'
      
      medium
      A. Test fails because read_text() returns bytes, not string
      B. Test fails because the file is not created
      C. Test passes because the file content matches 'hello'
      D. Test raises an exception due to invalid file path

      Solution

      1. Step 1: Analyze file creation and writing

        The code creates a file 'test.txt' in the temporary directory and writes the string 'hello' to it.
      2. Step 2: Check reading and assertion

        Reading the file with read_text() returns the string 'hello', which matches the assertion.
      3. Final Answer:

        Test passes because the file content matches 'hello' -> Option C
      4. Quick Check:

        write_text/read_text with tmp_path works [OK]
      Hint: write_text and read_text handle strings correctly [OK]
      Common Mistakes:
      • Assuming read_text returns bytes instead of string
      • Thinking file is not created automatically
      • Expecting exceptions from valid path operations
      4. Identify the error in this pytest test using tmp_path_factory:
      def test_dir_creation(tmp_path_factory):
          dir1 = tmp_path_factory.mktemp('dir')
          dir2 = tmp_path_factory.mktemp('dir')
          assert dir1 != dir2
      
      medium
      A. Error because mktemp cannot create directories with the same name
      B. No error; test passes because mktemp creates unique dirs
      C. Error because tmp_path_factory is not a valid fixture
      D. Error because assert compares directory contents, not paths

      Solution

      1. Step 1: Understand mktemp behavior

        Each call to mktemp('dir') creates a unique temporary directory, even if the name is the same.
      2. Step 2: Check assertion validity

        The assertion compares the two directory paths and expects them to be different, which is true.
      3. Final Answer:

        No error; test passes because mktemp creates unique dirs -> Option B
      4. Quick Check:

        mktemp creates unique dirs even with same name [OK]
      Hint: mktemp always creates unique dirs, names can repeat [OK]
      Common Mistakes:
      • Thinking mktemp fails on duplicate names
      • Confusing fixture names or usage
      • Assuming assert compares contents, not paths
      5. You want to write a pytest test that creates two temporary directories: one shared across multiple tests and one unique per test. Which combination of fixtures should you use?
      hard
      A. Use tmp_path_factory to create the shared directory and tmp_path for the unique per-test directory
      B. Use tmp_path for both shared and unique directories
      C. Use tmp_path_factory for both shared and unique directories
      D. Use tmp_path to create the shared directory and tmp_path_factory for unique directories

      Solution

      1. Step 1: Identify fixture roles

        tmp_path provides a fresh temp directory unique to each test. tmp_path_factory can create directories shared or reused across tests.
      2. Step 2: Match requirements to fixtures

        For a shared directory across tests, use tmp_path_factory. For unique per-test directories, use tmp_path.
      3. Final Answer:

        Use tmp_path_factory to create the shared directory and tmp_path for the unique per-test directory -> Option A
      4. Quick Check:

        tmp_path unique per test, tmp_path_factory for shared [OK]
      Hint: tmp_path unique per test; tmp_path_factory for shared dirs [OK]
      Common Mistakes:
      • Using tmp_path for shared directories
      • Using tmp_path_factory only for unique per-test dirs
      • Mixing up fixture purposes
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard