我有一個想用pytest測驗的類的方法,比如_method_of_interest下面的方法。
class MyClass():
def __init__(self, stuff):
...
..
..
def _method_of_interest(self, list1, list2):
"""
some logic that depends on list1, list2, and self.relevant_info
Also calls self._helper_method(list)
"""
output = list1 list2 self._helper_method(list2) self.relevant_info
return output
def _helper_method(self, lista):
"""
Helper method depends on lista and self.relevant_info
"""
return lista self.relevant_info
我希望能夠_method_of_interest使用 list1、list2 和 self.relevant_info 的不同值進行測驗。所以我主要需要能夠為self.relevant_info. 用 Python 做到這一點的最干凈的方法是什么?
uj5u.com熱心網友回復:
最簡單的方法是使用內置的unittest框架。
定義多個測驗用例。在每個中,您創建一個新的 MyClass 物件,其中包含stuff為該測驗定義的物件。然后將 my_class._method_of_interest 的輸出與一些預定義的預期輸出(使用 unittest.TestCase 的 assertEqual 方法)進行比較。當然,您可以針對多個不同的串列 1&2 進行多次測驗。
編輯:如果您不能通過relevant_info建構式本身進行設定,那么您可以隨時手動調整它。類屬性在 python 中不受保護,沒有人可以阻止你這樣做:
my_class = MyClass(unrelevant_info)
my_class.relevant_info = relevant_info
但是如果你需要這樣做,那么代碼中就會出現一些可疑的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/443856.html
標籤:Python python-3.x 嘲弄 pytest 修补
上一篇:如何在裝飾器中傳遞帶有值的變數?
下一篇:反轉內括號
