Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Report failed tests #10

Merged
merged 6 commits into from
Mar 18, 2023
Merged

Report failed tests #10

merged 6 commits into from
Mar 18, 2023

Conversation

kaiosilveira
Copy link
Owner

@kaiosilveira kaiosilveira commented Mar 18, 2023

Chapter 22: Dealing with failure

Our goal in this chapter was to implement a way to capture failed tests and report them, which we managed to accomplish by implementing a new counter for errors in TestResult and using it at TestCase.

Implementation checklist:

Invoke tearDown afterward
☑️ Invoke tearDown even if the test method fails
☑️ Run multiple tests
Report collected results
Report failed tests
Catch and report setUp errors

Closes #11

@kaiosilveira kaiosilveira force-pushed the chapter22/dealing-with-failure branch 2 times, most recently from e843bb7 to 2848001 Compare March 18, 2023 16:01
@kaiosilveira kaiosilveira linked an issue Mar 18, 2023 that may be closed by this pull request
Checklist:
- Invoke tearDown even if the test method fails
- Run multiple tests
- Report failed tests 👈🏼

---

Output:
➜ python3 src/test_case_test.py
Traceback (most recent call last):
  File "tdd-xunit-example/src/test_case_test.py", line 24, in <module>
    TestCaseTest("testFailedResultFormatting").run()
  File "tdd-xunit-example/src/test_case.py", line 17, in run
    method()
  File "tdd-xunit-example/src/test_case_test.py", line 19, in testFailedResultFormatting
    result.testFailed()
    ^^^^^^^^^^^^^^^^^
AttributeError: 'TestResult' object has no attribute 'testFailed'. Did you mean: 'testStarted'?
Checklist:
- Invoke tearDown even if the test method fails
- Run multiple tests
- Report failed tests 👈🏼

---

Output:
Traceback (most recent call last):
  File "tdd-xunit-example/src/test_case_test.py", line 24, in <module>
    TestCaseTest("testFailedResultFormatting").run()
  File "tdd-xunit-example/src/test_case.py", line 17, in run
    method()
  File "tdd-xunit-example/src/test_case_test.py", line 20, in testFailedResultFormatting
    assert ("1 run, 1 failed" == result.summary())
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
Checklist:
- Invoke tearDown even if the test method fails
- Run multiple tests
- Report failed tests 👈🏼
There's a subtlety hidden in this implementation: if we have any problems during setUp, our test failure will not be correctly reported. A new item was added to the checklist below to cover this case.

Checklist:
- Invoke tearDown even if the test method fails
- Run multiple tests
- Report failed tests ✅
- Catch and report setUp errors
Checklist:
- Invoke tearDown even if the test method fails
- Run multiple tests
- Report failed tests ✅
- Catch and report setUp errors 👈🏼

---

Output:
➜ python3 src/test_case_test.py
Traceback (most recent call last):
  File "tdd-xunit-example/src/test_case_test.py", line 39, in <module>
    TestCaseTestWithBrokenSetup("testFailedSetUp").run()
  File "tdd-xunit-example/src/test_case.py", line 15, in run
    self.setUp()
  File "tdd-xunit-example/src/test_case_test.py", line 11, in setUp
    raise Exception
Exception
Checklist:
- Invoke tearDown even if the test method fails
- Run multiple tests
- Report failed tests ✅
- Catch and report setUp errors ✅
@kaiosilveira kaiosilveira force-pushed the chapter22/dealing-with-failure branch from 2848001 to ca7f326 Compare March 18, 2023 16:09
@kaiosilveira kaiosilveira changed the base branch from chapter21/counting to main March 18, 2023 16:09
@kaiosilveira kaiosilveira marked this pull request as ready for review March 18, 2023 16:11
@kaiosilveira kaiosilveira merged commit 8f1bffc into main Mar 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Chapter 22: Dealing with failure
1 participant