Jump to content

Unit Testing/Pytest/Test Exceptions

From Wikiversity

Create a Python Program

[edit | edit source]

Create the following Python program. Save it as multiply.py

def multiply(x, y):
    result = x * y
    return result


def main():
    multiplicand = float(input("Enter a multiplicand: "))
    multiplier = float(input("Enter a multiplier: "))
    product = multiply(multiplicand, multiplier)
    print(f"The product is: {product}")


if __name__ == "__main__":
    main()

Create a Test Program

[edit | edit source]

Create the following Pytest test program. Save it as test_multiply.py

import pytest
import multiply


def test_invalid_input():
    input_values = [
        "2",
        "X"
    ]

    def input(prompt=None):
        return input_values.pop(0)

    multiply.input = input

    with pytest.raises(ValueError):
        multiply.main()

Test Success

[edit | edit source]

Test the program by running pytest in a terminal or command prompt in the same folder as the two programs above and observe the results.

pytest

Test Failure

[edit | edit source]

Change the test source code somehow, such as replacing the invalid input with valid input. Test the program by running pytest again and observe the results.