Tôi có một lớp cơ sở trừu tượng dọc theo dòng:Không bao gồm abstractproperties từ bảo hiểm báo cáo
class MyAbstractClass(object):
__metaclass__ = ABCMeta
@abstractproperty
def myproperty(self): pass
Nhưng khi tôi chạy nosetests (mà bảo hiểm) về dự án của tôi, nó than phiền rằng dòng def tài sản là chưa được kiểm tra. Nó có thể không thực sự được kiểm tra (AFAIK) như instantiation của lớp trừu tượng sẽ dẫn đến một ngoại lệ được nâng lên ..
Có bất kỳ cách giải quyết này, hay tôi chỉ phải chấp nhận < 100% bảo hiểm thử nghiệm ?
Tất nhiên, tôi có thể xóa việc sử dụng ABCMeta
và chỉ đơn giản là nâng cấp cơ sở NotImpementedError
, nhưng tôi thích phương pháp cũ hơn.
Tôi đã kết thúc tìm hiểu về '#pragma: không có bìa' trên IRC và đi với nội tuyến đó. Tôi không phải là một fan hâm mộ của việc có một thực hiện trong một tài sản trừu tượng (ngay cả khi nó chỉ là 'nâng cao NotImplementedError' vì nó dường như để đánh bại mục đích). –
chờ đợi: bạn đã đồng ý với việc đưa nhận xét "#pragma: no cover" lên mọi thuộc tính trừu tượng, nhưng bạn không ổn với việc thay đổi nội dung khỏi chuyển đến "nâng cao NotImplementedError"? Với từng người, tôi đoán ... Rất vui khi bạn tìm được một giải pháp mà bạn thích. –
Tôi chắc chắn đồng ý nó không phải là một giải pháp tối ưu, nhưng tôi thích sử dụng chỉ thị nội tuyến như vậy để thay đổi mục đích sử dụng và lợi ích của mô-đun lớp cơ sở trừu tượng .. –