Làm cách nào để khiến pytest bỏ qua một lớp có tên TestSomething? [bản sao]

Aug 16 2020

Tôi đang làm việc trên một loại khung thử nghiệm mà TestSomethingtấ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

4 DavidJ Aug 16 2020 at 03:59

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ờ Falsetrong 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.initệ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