What will be the output of the code?
❌ A. 3 passed, 0 failed
✅ B. 2 passed, 1 failed
❌ C. 1 passed, 2 failed
❌ D. 0 passed, 3 failed
❌ E. 4 passed, 1 failed
❌ F. None of the above
Explanation:
1. Fixture calc: The pytest.fixture decorator creates a fixture named calc that provides a Calculator instance for the test cases.
2. test_addition: calc.add(3, 5) → Returns 8, so assert calc.add(3, 5) == 8 passes. calc.add(-1, 1) → Returns 0, so assert calc.add(-1, 1) == 0 passes. This test passes.
3. test_division: calc.divide(10, 2) → Returns 5, so assert calc.divide(10, 2) == 5 passes. pytest.raises ensures calc.divide(5, 0) raises a ValueError. It does, and the exception message matches "Division by zero is not allowed". This test passes.
4. test_failed_addition: calc.add(1, 2) → Returns 3, but the test asserts calc.add(1, 2) == 5. This assertion fails, causing the test to fail.
Final Output: 2 tests pass: test_addition, test_division. 1 test fails: test_failed_addition, so 2 passed, 1 failed.
Correct answer: B
❌ A. 3 passed, 0 failed
✅ B. 2 passed, 1 failed
❌ C. 1 passed, 2 failed
❌ D. 0 passed, 3 failed
❌ E. 4 passed, 1 failed
❌ F. None of the above
Explanation:
1. Fixture calc: The pytest.fixture decorator creates a fixture named calc that provides a Calculator instance for the test cases.
2. test_addition: calc.add(3, 5) → Returns 8, so assert calc.add(3, 5) == 8 passes. calc.add(-1, 1) → Returns 0, so assert calc.add(-1, 1) == 0 passes. This test passes.
3. test_division: calc.divide(10, 2) → Returns 5, so assert calc.divide(10, 2) == 5 passes. pytest.raises ensures calc.divide(5, 0) raises a ValueError. It does, and the exception message matches "Division by zero is not allowed". This test passes.
4. test_failed_addition: calc.add(1, 2) → Returns 3, but the test asserts calc.add(1, 2) == 5. This assertion fails, causing the test to fail.
Final Output: 2 tests pass: test_addition, test_division. 1 test fails: test_failed_addition, so 2 passed, 1 failed.
Correct answer: B