Test exceptions and invalid inputs
See this course’s project requirements
A runnable automated test suite for an original parcel-price module with boundary cases, isolated fixtures, failure evidence and a repaired regression.
Keep your working files in your own notebook or software. Save a private description, checklist, and work link in My Proof.
What to include
- A price assertion table with independent expected values.
- An executable unit-test record with independent cases.
- A labeled boundary-test table across both price tiers.
- A rejection suite with a passing valid boundary comparison.
- An isolated file test with declared automatic cleanup.
- A failing-then-passing regression record with source and run instructions.
Review and revise
Use these criteria to check your work and choose what to improve.
- The implementation or declared simulation follows the supplied contract and retains inspectable original inputs.
- Normal, boundary and rejected cases are recorded with expected versus observed results.
- The changed case has a correct explanation and does not rely on hidden state.
- The project includes source, outputs, instructions and honest tool, privacy and verification limits.
Want more background?
The idea in everyday life
Invalid inputs include 0, -1, 5.01, string "1", Boolean True and the nonfinite float values NaN and positive/negative infinity. Valid 5 must not be rejected. The range test not 0 < weight <= 5 rejects NaN because its ordered comparisons are false.
An exception test asserts a particular rejected behavior. Do not catch any exception and call it a pass: an unrelated syntax or file error does not prove that validation followed its rule.
Test exceptions and invalid inputs — original worked practice
An exception test asserts a particular rejected behavior. Do not catch any exception and call it a pass: an unrelated syntax or file error does not prove that validation followed its rule.
Invalid inputs include 0, -1, 5.01, string "1", Boolean True and the nonfinite float values NaN and positive/negative infinity. Valid 5 must not be rejected. The range test not 0 < weight <= 5 rejects NaN because its ordered comparisons are false.
1. Step 1
Use assertRaises(ValueError) for 0.
You should see: The declared validation exception is required.
This keeps the rule and its observable result together.
2. Step 2
Add negative, over-limit and nonfinite weights: -1, 5.01, float("nan"), float("inf") and float("-inf"). Check the separate test_nonfinite method.
You should see: All are rejected with ValueError: nonfinite values do not fit 0 < weight <= 5.
This keeps the rule and its observable result together.
3. Step 3
Test string and Boolean types separately.
You should see: Both are rejected despite looking numeric.
This keeps the rule and its observable result together.
4. Step 4
Run valid 5 beside invalid 5.01.
You should see: A rejection suite with a passing valid boundary comparison.
This keeps the rule and its observable result together.
What to finish
A rejection suite with a passing valid boundary comparison.
Watch for this
Accepting a numeric-looking string or Boolean even though the function contract requires a real numeric value.
How can I tell I understand it?
Explain and demonstrate the required distinction: An exception test asserts a particular rejected behavior. Do not catch any exception and call it a pass: an unrelated syntax or file error does not prove that validation followed its rule. Show a changed input and the expected result without weakening this contract.
Quick knowledge check
Answer all 3 questions. Get at least 2 right and the lesson completes automatically.
You’ll get an explanation for each answer. Signed in? Your results save to your account.
Pass the check. We’ll save the progress.
Answer all 3 questions above and get at least 2 right. You can review the explanations and try again.
Go to the knowledge checkTools, templates, and lesson sources
Tools and templates
Tools open in a new tab so you can keep your place here.
Sources and further reading
Explore the references behind this lesson.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Report a problem with this lesson
Tell us what went wrong. Please leave out personal information and private project contents.