第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

具有模擬和多個(gè)功能的單元測(cè)試

具有模擬和多個(gè)功能的單元測(cè)試

絕地?zé)o雙 2023-05-09 15:32:49
我不能實(shí)例化一個(gè)對(duì)象,因?yàn)樗且粋€(gè)抽象類,所以我必須使用模擬來測(cè)試我的代碼。有人告訴我,最好通過創(chuàng)建一個(gè)新mock類來完成。class MockMyClass(MyClass):     def my_first_function(...):這個(gè)想法是我然后實(shí)例化一個(gè)MockMyClass對(duì)象,我可以在其中測(cè)試私有函數(shù)。我已經(jīng)閱讀了 python指南并研究了其他堆棧問題。到這里,mock背后的理論已經(jīng)很好的解釋了。不幸的是,我仍然不知道如何在大型單元測(cè)試中為多個(gè)函數(shù)使用模擬。例如:如果我有一個(gè)類,主代碼中的其他類從中繼承函數(shù)。這可以采用以下形式:class SharedFunctions(AnotherClass):    first_function():        #do some important calculations to generate stuff.#        self.stuff = first_function_attribute_stuff        return returned_first_stuff    second_functions(returned_stuff)        returned_second_stuff = self.stuff + returned_first_stuff                return returned_second_stuff并且該類SharedFunctions還繼承自另一個(gè)類(注意抽象方法)的形式:class AnotherClass():    @abc.abstractmethod    def one_important_universal_function(...):        pass我試圖unittest為SharedFunctions這段代碼構(gòu)建一個(gè)。到目前為止,這是我嘗試過的:class MockSharedFunctions(SharedFunctions):    def first_function(...):        self.stuff = some value        returned_first_stuff = given some other value        return returned_first_stuff    def second_function        returned_second_stuff = another value.        return returned_second_stuffclass TestSharedFunctions(unittest.TestCase):    def test_first_function(self):        # insert code #        self.assertTrue(True)    def test_second_function(self):        # insert code #        self.assetEqual(output, expected)        self.assertTrue(True)if __name__ == "__main__":    unittest.main()insert code使用模擬的各種嘗試在哪里。但是,我還沒有找到一個(gè)清楚的例子來說明如何使用模擬函數(shù)來替換其他函數(shù),或者確認(rèn)這會(huì)起作用。感謝您的任何幫助。
查看完整描述

1 回答

?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

一個(gè)常見的問題是模擬函數(shù)的使用過于復(fù)雜。您幾乎可以像對(duì)待另一個(gè)類方法一樣對(duì)待它們。在您的情況下,abstractmethod裝飾器可能會(huì)造成混亂。


這接近您可能需要的東西。


class MockSharedFunctions(SharedFunctions):

    def one_important_universal_function(**args):

        return 0


class TestSharedFunctions(unittest.TestCase):

    def test_first_function(self):

        mock = MockSharedFunctions()

        mock_output = firstfunction(**args)

        mock_stuff = mock.stuff


        self.assertTrue(True)

        self.assetEqual(mock_output, expected)

        self.assetEqual(mock_stuff, expected)


    def test_second_function(self):

        mock = MockSharedFunctions()

        mock.stuff = some_value

        mock_output = second_function(**args)


        self.assetEqual(mock_output, expected)

        self.assertTrue(True)


if __name__ == "__main__":

    unittest.main()

在這里,MockSharedFunctions您已經(jīng)在繼承SharedFunctions. 作為one_important_universal_function一個(gè)抽象方法,它需要被定義。


查看完整回答
反對(duì) 回復(fù) 2023-05-09
  • 1 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)