簡體   English   中英

Python:從unittest.mock解壓縮call_args_list

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM