Pytest - Bộ thử nghiệm dừng sau lần thử nghiệm N thất bại
Trong một kịch bản thực tế, khi một phiên bản mã mới đã sẵn sàng để triển khai, nó sẽ được triển khai lần đầu tiên trong môi trường pre-prod / staging. Sau đó, một bộ thử nghiệm chạy trên đó.
Mã chỉ đủ điều kiện để triển khai đến phiên bản sản xuất nếu bộ thử nghiệm vượt qua. Nếu có lỗi kiểm tra, dù là một hay nhiều, mã đó chưa sẵn sàng sản xuất.
Do đó, điều gì sẽ xảy ra nếu chúng ta muốn dừng việc thực thi bộ thử nghiệm ngay sau khi n số thử nghiệm không thành công. Điều này có thể được thực hiện trong pytest bằng cách sử dụng maxfail.
Cú pháp để dừng việc thực thi bộ thử nghiệm ngay sau khi n số lần thử nghiệm không thành công như sau:
pytest --maxfail = <num>
Tạo tệp test_failure.py bằng mã sau.
import pytest
import math
def test_sqrt_failure():
num = 25
assert math.sqrt(num) == 6
def test_square_failure():
num = 7
assert 7*7 == 40
def test_equality_failure():
assert 10 == 11
Tất cả 3 bài kiểm tra sẽ không thành công khi thực hiện tệp kiểm tra này. Ở đây, chúng tôi sẽ dừng việc thực hiện kiểm tra sau một lần thất bại bằng cách -
pytest test_failure.py -v --maxfail = 1
test_failure.py::test_sqrt_failure FAILED
=================================== FAILURES
=================================== _______________________________________
test_sqrt_failure __________________________________________
def test_sqrt_failure():
num = 25
> assert math.sqrt(num) == 6
E assert 5.0 == 6
E + where 5.0 = <built-in function sqrt>(25)
E + where <built-in function sqrt>= math.sqrt
test_failure.py:6: AssertionError
=============================== 1 failed in 0.04 seconds
===============================
Trong kết quả trên, chúng ta có thể thấy việc thực thi bị dừng lại sau một lần thất bại.