[unittest.mock] `spec_set` should be applied after setting attributes via kwargs
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 42/100
Hướng nghiên cứu
Bắt đầu từ unittest.mock.create_autospec() và theo dõi cách các đối số từ khóa của nó đi đến configure_mock() cũng như cách cơ chế áp dụng spec_set hoạt động. Tái hiện ví dụ trong issue, sau đó xác minh rằng các kwargs như banana được áp dụng trước khi spec_set từ chối các thuộc tính không xác định được thêm vào sau đó.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
>>> a=create_autospec("foo", spec_set=True, banana=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.8/unittest/mock.py", line 2607, in create_autospec
mock = Klass(parent=_parent, _new_parent=_parent, _new_name=_new_name,
File "/usr/lib/python3.8/unittest/mock.py", line 2006, in __init__
_safe_super(MagicMixin, self).__init__(*args, **kw)
File "/usr/lib/python3.8/unittest/mock.py", line 460, in __init__
self.configure_mock(**kwargs)
File "/usr/lib/python3.8/unittest/mock.py", line 629, in configure_mock
setattr(obj, final, val)
File "/usr/lib/python3.8/unittest/mock.py", line 744, in __setattr__
raise AttributeError("Mock object has no attribute '%s'" % name)
AttributeError: Mock object has no attribute 'banana'
One reason to pass extra kwargs to create_autospec() like this is to set missing attributes (e.g. because you know that they get set dynamically later on). So, it would be nice to have those attributes set on the mock before spec_set comes into effect.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 36k
- Merge trung bình
- 1 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 558
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của python/cpython
-
docs pending
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
stdlib type-feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
stdlib type-feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
build type-bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
stdlib topic-email type-feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Tất cả issue của python/cpython
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
PolicyEngine/policyengine-us#9559 ·
-
priority: p3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
googleapis/librarian#7636 ·
-
from:qa priority:P2 reliability tech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
spec-kitty/spec-kitty#4874 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100