Home > Article > Backend Development > How to use pytest for Python unit testing
How to use pytest for Python unit testing
Introduction:
Unit testing is an indispensable task in software development. It can help us ensure the quality and stability of the code. In Python, pytest is a powerful and easy-to-use unit testing framework. This article will introduce how to use pytest for Python unit testing.
1. Install pytest
First, we need to install pytest. The installation can be easily completed using the pip command:
pip install pytest
2. Write test cases
Next, we need to write test cases. A test case is a block of code that verifies the function or functionality of the code under test.
Example:
Suppose we want to test a simple calculator module, which contains four operations: addition, subtraction, multiplication and division. We can create a file named test_calculator.py
in the project to store the code of the test case. The following is the code of an example test case:
# test_calculator.py from calculator import add, subtract, multiply, divide def test_add(): assert add(2, 3) == 5 def test_subtract(): assert subtract(5, 3) == 2 def test_multiply(): assert multiply(2, 3) == 6 def test_divide(): assert divide(6, 3) == 2
In the above code, we use the assert
statement provided by the pytest framework to assert whether the test results are as expected.
3. Run test cases
After completing the writing of test cases, we can use pytest to run these test cases.
Enter the project directory on the command line and enter the following command to test:
pytest
pytest will automatically find the test cases in the project and run them.
Example of running results:
============================= test session starts ============================== platform darwin -- Python 3.9.0, pytest-6.2.2, py-1.10.0, pluggy-0.13.1 rootdir: /path/to/project collected 4 items test_calculator.py .... [100%] ============================== 4 passed in 0.02s ===============================
The above results show that all four test cases we wrote passed the test.
4. Advanced usage
Example:
import pytest @pytest.mark.parametrize( "a, b, expected", [ (2, 3, 5), (-1, 1, 0), (0, 0, 0), ], ) def test_add(a, b, expected): assert add(a, b) == expected
In the above code, we use the @pytest.mark.parametrize decorator to parameterize the test case. Each set of parameters is automatically passed to the function under test and assertions are made.
setup
and teardown
to implement these operations. Example:
@pytest.fixture(autouse=True) def setup_and_teardown(): # 在测试用例运行之前的准备工作 print("准备工作") yield # 在测试用例运行之后的清理工作 print("清理工作")
In the above example, we use the setup_and_teardown
decorator to define a function with pre- and post-operations. Use the yield
keyword to insert the test case into the location where the function is defined.
Conclusion:
This article introduces how to use pytest for Python unit testing. You can use pytest to easily conduct code testing by installing pytest, writing test cases, running test cases, and using advanced usage. I hope this article can be helpful to your unit testing work in software development.
The above is the detailed content of How to use pytest for Python unit testing. For more information, please follow other related articles on the PHP Chinese website!