Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Test suite organization in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Organize and run multiple test cases in a test suite
Preconditions (3)
Step 1: Create three test files: test_math.py, test_strings.py, test_lists.py
Step 2: In test_math.py, write a test function to check addition of two numbers
Step 3: In test_strings.py, write a test function to check string uppercase conversion
Step 4: In test_lists.py, write a test function to check list append operation
Step 5: Create a test suite file named test_suite.py that imports all three test files
Step 6: Run the test suite using pytest command
Step 7: Verify that all three tests run and pass
✅ Expected Result: All three tests run successfully and pass, showing a summary report with 3 passed tests
Automation Requirements - pytest
Assertions Needed:
Verify addition result equals expected value
Verify string uppercase conversion matches expected
Verify list append results in expected list length
Best Practices:
Use descriptive test function names
Keep tests independent and isolated
Organize tests logically by feature or functionality
Use pytest conventions for test discovery
Avoid hardcoding values inside tests; use variables
Automated Solution
Testing Fundamentals
import pytest

# test_math.py

def test_addition():
    result = 2 + 3
    assert result == 5

# test_strings.py

def test_uppercase():
    text = "hello"
    assert text.upper() == "HELLO"

# test_lists.py

def test_append():
    items = [1, 2, 3]
    items.append(4)
    assert len(items) == 4

# test_suite.py

import test_math
import test_strings
import test_lists

if __name__ == "__main__":
    pytest.main()

The code defines three test functions, each in a separate section simulating separate files: test_math.py, test_strings.py, and test_lists.py. Each test checks a simple operation with an assertion.

The test_suite.py file imports these test modules and runs pytest to discover and execute all tests automatically.

This organization shows how to group related tests and run them together as a suite, following pytest conventions for easy test discovery and reporting.

Common Mistakes - 4 Pitfalls
{'mistake': 'Not using pytest naming conventions for test functions', 'why_bad': "Pytest will not discover tests that do not start with 'test_' automatically, so tests won't run.", 'correct_approach': "Always name test functions starting with 'test_' so pytest can find and run them."}
Putting multiple unrelated tests in one function
Hardcoding values inside tests without variables
Not isolating tests leading to shared state
Bonus Challenge

Now add data-driven testing with 3 different inputs for the addition test

Show Hint

Practice

(1/5)
1. What is the main purpose of a test suite in software testing?
easy
A. To group related test cases for easier management and execution
B. To write code for the application features
C. To store user data during testing
D. To replace manual testing completely

Solution

  1. Step 1: Understand the role of test suites

    A test suite is a collection of related test cases grouped together to organize testing efforts.
  2. Step 2: Identify the correct purpose

    Grouping test cases helps testers run many tests together and manage them easily.
  3. Final Answer:

    To group related test cases for easier management and execution -> Option A
  4. Quick Check:

    Test suite groups tests = A [OK]
Hint: Test suites group tests to run together easily [OK]
Common Mistakes:
  • Confusing test suite with application code
  • Thinking test suite stores user data
  • Believing test suite replaces manual testing
2. Which of the following is the correct way to define a test suite in Python's unittest framework?
easy
A. suite = unittest.TestSuite([TestClass1, TestClass2])
B. suite = unittest.TestSuite([TestClass1(), TestClass2()])
C. suite = unittest.TestSuite(TestClass1, TestClass2)
D. )2ssalCtseT ,1ssalCtseT(etiuStseT.tsettinu = etius

Solution

  1. Step 1: Recall unittest TestSuite syntax

    TestSuite expects a list of test case instances, not classes.
  2. Step 2: Check each option

    suite = unittest.TestSuite([TestClass1(), TestClass2()]) correctly passes instances: TestClass1() and TestClass2() inside a list.
  3. Final Answer:

    suite = unittest.TestSuite([TestClass1(), TestClass2()]) -> Option B
  4. Quick Check:

    TestSuite needs instances in list = A [OK]
Hint: Pass test case instances in a list to TestSuite [OK]
Common Mistakes:
  • Passing classes instead of instances
  • Not using a list to group tests
  • Using parentheses incorrectly
3. Given the following test suite code snippet in Python unittest:
import unittest

class TestA(unittest.TestCase):
    def test_one(self):
        self.assertTrue(True)

class TestB(unittest.TestCase):
    def test_two(self):
        self.assertEqual(1, 1)

suite = unittest.TestSuite()
suite.addTest(TestA('test_one'))
suite.addTest(TestB('test_two'))
runner = unittest.TextTestRunner()
result = runner.run(suite)

What will be the result of running this test suite?
medium
A. Both tests pass and the suite completes successfully
B. TestA fails but TestB passes
C. TestB fails but TestA passes
D. Both tests fail and the suite reports errors

Solution

  1. Step 1: Analyze each test case

    TestA.test_one asserts True is True, which passes. TestB.test_two asserts 1 equals 1, which also passes.
  2. Step 2: Understand test suite execution

    The suite runs both tests; since both assertions are correct, no failures occur.
  3. Final Answer:

    Both tests pass and the suite completes successfully -> Option A
  4. Quick Check:

    Assertions true = tests pass = D [OK]
Hint: Check each assertion; all true means all tests pass [OK]
Common Mistakes:
  • Assuming tests fail without checking assertions
  • Confusing test method names
  • Ignoring that both tests run in suite
4. You have a test suite that should run three tests, but only two run. The suite code is:
suite = unittest.TestSuite()
suite.addTest(TestClass('test_one'))
suite.addTest(TestClass('test_two'))
runner.run(suite)

What is the likely reason the third test test_three is not running?
medium
A. The test runner does not support more than two tests
B. The test method name test_three is invalid
C. The test class does not inherit from unittest.TestCase
D. The third test was not added to the test suite

Solution

  1. Step 1: Review test suite additions

    The suite only adds test_one and test_two. test_three is missing.
  2. Step 2: Check other options

    Method name test_three is valid if it starts with 'test'. Runner supports many tests. Class inheritance assumed correct.
  3. Final Answer:

    The third test was not added to the test suite -> Option D
  4. Quick Check:

    Missing addTest call = C [OK]
Hint: Add all tests explicitly to suite to run them [OK]
Common Mistakes:
  • Assuming test runner limits tests
  • Thinking method names cause skipping
  • Ignoring suite.addTest calls
5. You want to organize a large number of tests into suites that share setup and teardown steps. Which approach best supports this in Python unittest?
hard
A. Write all tests in one TestCase class without setup methods
B. Use print statements to separate tests visually
C. Create multiple TestCase classes with setUp and tearDown methods, then group their instances in TestSuites
D. Run each test individually without grouping

Solution

  1. Step 1: Understand setup/teardown in unittest

    setUp and tearDown methods in TestCase classes run before and after each test, helping prepare and clean up.
  2. Step 2: Organize tests for sharing setup

    Grouping related TestCase instances in TestSuites allows running tests that share setup/teardown logically.
  3. Final Answer:

    Create multiple TestCase classes with setUp and tearDown methods, then group their instances in TestSuites -> Option C
  4. Quick Check:

    Use TestCase setup + TestSuite grouping = B [OK]
Hint: Use TestCase setup with TestSuite grouping for shared steps [OK]
Common Mistakes:
  • Putting all tests in one class without setup
  • Using print instead of setup methods
  • Running tests one by one without suites
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