Pytest - Đồ đạc

Fixtures là các chức năng, sẽ chạy trước mỗi chức năng thử nghiệm mà nó được áp dụng. Các đồ đạc được sử dụng để cung cấp một số dữ liệu cho các bài kiểm tra như kết nối cơ sở dữ liệu, URL để kiểm tra và một số loại dữ liệu đầu vào. Do đó, thay vì chạy cùng một đoạn mã cho mọi bài kiểm tra, chúng ta có thể gắn hàm fixture vào các bài kiểm tra và nó sẽ chạy và trả lại dữ liệu cho bài kiểm tra trước khi thực hiện mỗi bài kiểm tra.

Một chức năng được đánh dấu là cố định bởi -

@pytest.fixture

Một hàm kiểm tra có thể sử dụng một vật cố định bằng cách đề cập đến tên vật cố định làm tham số đầu vào.

Tạo một tệp test_div_by_3_6.py và thêm mã bên dưới vào nó

import pytest

@pytest.fixture
def input_value():
   input = 39
   return input

def test_divisible_by_3(input_value):
   assert input_value % 3 == 0

def test_divisible_by_6(input_value):
   assert input_value % 6 == 0

Ở đây, chúng ta có một hàm cố định có tên input_value, cung cấp đầu vào cho các bài kiểm tra. Để truy cập chức năng cố định, các bài kiểm tra phải đề cập đến tên cố định làm tham số đầu vào.

Pytest trong khi quá trình kiểm tra đang được thực thi, sẽ thấy tên cố định là tham số đầu vào. Sau đó, nó thực thi hàm fixture và giá trị trả về được lưu trữ vào tham số đầu vào, tham số này có thể được sử dụng bởi thử nghiệm.

Thực hiện kiểm tra bằng lệnh sau:

pytest -k divisible -v

Lệnh trên sẽ tạo ra kết quả sau:

test_div_by_3_6.py::test_divisible_by_3 PASSED
test_div_by_3_6.py::test_divisible_by_6 FAILED
============================================== FAILURES
==============================================
________________________________________ test_divisible_by_6
_________________________________________
input_value = 39
   def test_divisible_by_6(input_value):
>  assert input_value % 6 == 0
E  assert (39 % 6) == 0
test_div_by_3_6.py:12: AssertionError
========================== 1 failed, 1 passed, 6 deselected in 0.07 seconds
==========================

Tuy nhiên, cách tiếp cận đi kèm với hạn chế của riêng nó. Hàm cố định được xác định bên trong tệp thử nghiệm chỉ có phạm vi trong tệp thử nghiệm. Chúng tôi không thể sử dụng vật cố định đó trong một tệp thử nghiệm khác. Để cung cấp một bộ cố định cho nhiều tệp thử nghiệm, chúng tôi phải xác định hàm cố định trong một tệp có tên là conftest.py.conftest.py được giải thích trong chương tiếp theo.