![](/img/trans.png)
[英]Python mock call_args_list unpacking tuples for assertion on arguments
[英]Python: Unpack call_args_list from unittest.mock
我想解壓縮一個模擬方法的參數。 我有一個被模擬的訂戶,被測試代碼調用,我想驗證notify()方法的調用。
class Subscriber:
def notify(self, event):
pass
我正在使用以下代碼片段解壓縮參數並驗證兩個調用:
calls= self.subscriber.notify.call_args_list
event1 = calls[0][0][0]
event2 = calls[1][0][0]
assert_that(event1, instance_of(CreatedEvent))
assert_that(event1.file.name, equal_to("foo.txt"))
但是展開事件的兩行代碼非常笨拙,並且與可讀代碼相去甚遠。 有人知道解壓縮參數的更好方法嗎?
非常感謝!
如果您要為每個調用中的事件聲明相同的內容,則使用簡單的for循環可能會有所幫助:
for call in calls:
event = call[0][0]
assert_that(event, instance_of(CreatedEvent))
assert_that(event.file.name, equal_to("foo.txt"))
您可以使用assert_has_calls
calls.assert_has_calls(call(ANY, ...), call(...))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.