2013-09-08 57 views
5

Tôi đang sử dụng pytest với giả trong dự án python của tôi.Tôi làm cách nào để có thể xóa các cuộc gọi mã thư viện khỏi truy xuất ngược đầu tiên?

Khi tôi gặp lỗi thất bại liên quan đến đối tượng giả (hầu như tất cả), truy xuất ngược vào mã nguồn thư viện giả và mã của tôi thực sự kích hoạt sự cố thường cuộn ra ngoài tầm nhìn.

Có cách nào để nói với py.test để loại trừ các thư viện đã cài đặt khỏi truy xuất ngược hay gì đó tương tự không? Mức độ tiếng ồn đang lấy đi từ những gì là nếu không một thư viện thử nghiệm ngọt ngào.

Trả lời

4

Có lỗi: chức năng xác định biến cục bộ __tracebackhide__ sẽ không được hiển thị. Ví dụ:

def some_support_code(x, y): 
    __tracebackhide__ = True 
    assert x == y 
+0

Hmm, điều đó thật thú vị. Tôi tự hỏi làm thế nào tôi sẽ làm cho công việc đó trong tình huống của tôi, để ẩn tất cả các cuộc gọi thư viện giả? – scanny

+0

Thêm '__tracebackhide__ = True' vào các chức năng phổ biến nhất trong thư viện giả của bạn. Nếu bạn thích một cái gì đó tổng quát hơn, bạn luôn có thể hack py.test trực tiếp. –

+0

Ah, nhưng giả là thư viện Python chuẩn, được cài đặt thông qua 'pip install mock', không phải mã tôi đã tự phát triển. Những gì tôi muốn tìm là cách để loại trừ bất kỳ mã "thư viện" nào mà tôi không sở hữu, có lẽ bởi pytest phát hiện rằng nó đã được cài đặt trong 'site-package /' hoặc bất kỳ thứ gì và loại trừ nó, tức là xử lý nó như một "hộp đen", như tôi. – scanny

2

pytest-mock bao gồm một tính năng sẽ ẩn dấu vết từ thư viện giả. Chỉ cần cài đặt pytest-mock và bạn đã hoàn tất.

Các vấn đề liên quan