Làm cách nào để khiến pytest bỏ qua một lớp có tên TestSomething? [bản sao]
Tôi đang làm việc trên một loại khung thử nghiệm mà TestSomething
tất nhiên là có các lớp được đặt tên . Và tôi nhận ra rằng các bài kiểm tra của mình không thành công vì pytest coi các lớp này là "thứ mà tôi cần để khởi tạo và chạy!", Ngay sau khi được nhập. Và điều này hoàn toàn sẽ không hoạt động.
import pytest
from package import TestSomethingClass
Có thể nhập trực tiếp lớp đó từ tệp thử nghiệm pytest không? Hay tôi có thể gián tiếp sử dụng những thứ đó thông qua một vật cố định?
Vấn đề tương tự cũng áp dụng cho các trường hợp ngoại lệ, vì tôi cần phải làm điều gì đó như
with pytest.raises(TestsSomethingError):
Trả lời
Tắt rõ ràng
Bạn có thể cho phép pytest bỏ qua lớp cụ thể này nhờ nó bắt đầu bằng từ Test
, bằng cách đặt __test__
cờ False
trong lớp xung đột của bạn
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
đặc tính: https://github.com/pytest-dev/pytest/pull/1561
Tập tin cấu hình
Chúng tôi cũng có thể thay đổi hoàn toàn quy ước trong pytest.ini
tệp của bạn và bỏ qua tất cả các tên lớp bắt đầu từ đó Example
. Nhưng tôi không khuyên điều này, vì chúng ta có thể gặp phải những hậu quả không mong muốn trong quá trình thực hiện.
#pytest.ini file
[pytest]
python_classes = !Example
Quy ước Pytest
kiểm tra các hàm hoặc phương thức kiểm tra có tiền tố bên ngoài lớp
kiểm tra các chức năng hoặc phương pháp kiểm tra có tiền tố bên trong các lớp kiểm tra có tiền tố Kiểm tra (không có phương thức init )
Nguồn: https://docs.pytest.org/en/stable/customize.html