<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • Python利用doctest模塊進(jìn)行文檔測(cè)試-創(chuàng)新互聯(lián)

            創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

            創(chuàng)新互聯(lián)是專(zhuān)業(yè)的襄陽(yáng)網(wǎng)站建設(shè)公司,襄陽(yáng)接單;提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行襄陽(yáng)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

            Python 利用doctest模塊進(jìn)行文檔測(cè)試?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

            所謂文檔測(cè)試,指的是通過(guò) doctest 模塊運(yùn)行 Python 源文件的說(shuō)明文檔中的測(cè)試用例,從而生成測(cè)試報(bào)告。

            前面在查看 Python 的模塊文檔時(shí),經(jīng)常會(huì)看到如下信息:

            >>>os.path.commonprefix (['/usr/lib','/usr/local/lib'])
            '/usr/1'
            >>>os.path.commonpath(['/usr/lib', '/usr/local/lib'])
            '/usr'

            用戶完全可以將這些代碼拷貝到 Python 的交互式解釋器中運(yùn)行,然后可以看到運(yùn)行結(jié)果與文檔中示例代碼的輸出結(jié)果完全一致。

            上面的說(shuō)明就是文檔測(cè)試的注釋?zhuān)臋n測(cè)試工具可以提取說(shuō)明文檔中的測(cè)試用例,其中“>>>”之后的內(nèi)容表示測(cè)試用例,接下來(lái)的一行則代表該測(cè)試用例的輸出結(jié)果。文檔測(cè)試工具會(huì)判斷測(cè)試用例的運(yùn)行結(jié)果與輸出結(jié)果是否一致,如果不一致就會(huì)顯示錯(cuò)誤信息。

            現(xiàn)在定義一個(gè)簡(jiǎn)單的模塊,該模塊包含一個(gè)函數(shù)和一個(gè)類(lèi),程序?yàn)樵摵瘮?shù)和該類(lèi)提供了說(shuō)明文檔,該文檔中包含了測(cè)試用例。程序代碼如下:

            def square (x):
                '''
                一個(gè)用于計(jì)算平方的函數(shù)
            
                例如
                >>> square(2)
                4
                >>> square(3)
                9
                >>> square(-3)
                9
                >>> square(0)
                0
                '''
                return x * 2 # ①、故意寫(xiě)錯(cuò)的
            
            class User:
                '''
                定義一個(gè)代表用戶的類(lèi),該類(lèi)包含如下兩個(gè)屬性:
                name - 代表用戶的名字
                age - 代表用戶的年齡
            
                例如
                >>> u = User('fkjava', 9)
                >>> u.name
                'fkjava'
                >>> u.age
                9
                >>> u.say('i love python')
                'fkjava說(shuō): i love python'
                '''
                def __init__(self, name, age):
                    self.name = 'fkit' # ②、故意寫(xiě)錯(cuò)的
                    self.age = age
                def say(self, content):
                    return self.name + '說(shuō): ' + content
            if __name__=='__main__':
                import doctest
                doctest.testmod()

            上面第一段注釋代碼就是程序?yàn)?square() 函數(shù)提供的測(cè)試用例,在文檔中一共為該函數(shù)提供了 4 個(gè)測(cè)試用例;第二段注釋代碼是程序?yàn)?User 類(lèi)提供的測(cè)試用例,在文檔中一共為該類(lèi)提供了 3 個(gè)測(cè)試用例,分別用于測(cè)試用戶的 name 、age 和 say() 方法。

            程序最后幾行代碼進(jìn)行了判斷,如果是直接使用 python 命令來(lái)運(yùn)行該程序(__name__ 等于 __main__),程序?qū)?dǎo)入 doctest 模塊,并調(diào)用該模塊的 testmod() 函數(shù)。

            從上面程序可以看到,Python 為文檔測(cè)試提供了 doctest 模塊,該模塊的用法非常簡(jiǎn)單,程序只要調(diào)用該模塊的 testmod() 函數(shù)即可。

            運(yùn)行上面程序,可以看到如下輸出結(jié)果:

            **********************************************************************
            File "C:\Users\mengma\Desktop\1.py", line 25, in __main__.User
            Failed example:
                u.name
            Expected:
                'fkjava'
            Got:
                'fkit'
            **********************************************************************
            File "C:\Users\mengma\Desktop\1.py", line 29, in __main__.User
            Failed example:
                u.say('i love python')
            Expected:
                'fkjava說(shuō): i love python'
            Got:
                'fkit說(shuō): i love python'
            **********************************************************************
            File "C:\Users\mengma\Desktop\1.py", line 8, in __main__.square
            Failed example:
                square(3)
            Expected:
                9
            Got:
                6
            **********************************************************************
            File "C:\Users\mengma\Desktop\1.py", line 10, in __main__.square
            Failed example:
                square(-3)
            Expected:
                9
            Got:
                -6
            **********************************************************************
            2 items had failures:
               2 of   4 in __main__.User
               2 of   4 in __main__.square
            ***Test Failed*** 4 failures.

            從上面的輸出結(jié)果可以看出,一共有 4 個(gè)測(cè)試沒(méi)有通過(guò),在 User 類(lèi)中有兩個(gè)測(cè)試沒(méi)有通過(guò),在 square() 函數(shù)中有兩個(gè)測(cè)試沒(méi)有通過(guò)。這是因?yàn)樯厦娉绦蛑?① ② 兩行代碼故意寫(xiě)錯(cuò)了,其中 ① 號(hào)代碼用于計(jì)算 x 的平方,應(yīng)該寫(xiě)成 x**2,但漏寫(xiě)了一個(gè)星號(hào);② 號(hào)代碼則應(yīng)該用傳入的 name 參數(shù)對(duì) self.name 賦值。

            上面顯示的測(cè)試輸出結(jié)果也很清晰,每個(gè)測(cè)試用例結(jié)果都包含如下 4 部分:

            第一部分:顯示在哪個(gè)源文件的哪一行。

            第二部分:Failed example,顯示是哪個(gè)測(cè)試用例出錯(cuò)了。

            第三部分:Expected,顯示程序期望的輸出結(jié)果。也就是在“>>>命令”的下一行給出的運(yùn)行結(jié)果,它就是期望結(jié)果。

            第四部分:Got,顯示程序?qū)嶋H運(yùn)行產(chǎn)生的輸出結(jié)果。只有當(dāng)實(shí)際運(yùn)行產(chǎn)生的輸出結(jié)果與期望結(jié)果一致時(shí),才表明該測(cè)試用例通過(guò)。

            將上面程序中 ① ② 兩行代碼修改正確,再次使用 python 命令來(lái)運(yùn)行程序,將看不到任何輸出結(jié)果,說(shuō)明文檔測(cè)試中的所有測(cè)試用例都通過(guò)了。

            由此可見(jiàn),Python 為文檔注釋提供了 doctest 模塊,該模塊的用法非常簡(jiǎn)單,程序只要導(dǎo)入該模塊,并調(diào)用該模塊的 testmod() 函數(shù)即可。testmod() 函數(shù)會(huì)自動(dòng)提取該模塊的說(shuō)明文檔中的測(cè)試用例,并執(zhí)行這些測(cè)試用例,最終生成測(cè)試報(bào)告。如果存在沒(méi)有通過(guò)的測(cè)試用例,程序就會(huì)顯示有多少個(gè)測(cè)試用例沒(méi)有通過(guò);如果所有測(cè)試用例都能通過(guò)測(cè)試,則不生成任何輸出結(jié)果。

            關(guān)于Python 利用doctest模塊進(jìn)行文檔測(cè)試問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

            分享名稱:Python利用doctest模塊進(jìn)行文檔測(cè)試-創(chuàng)新互聯(lián)
            URL地址:http://www.jbt999.com/article20/doopjo.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)外貿(mào)建站、面包屑導(dǎo)航、App開(kāi)發(fā)建站公司、標(biāo)簽優(yōu)化

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

            手機(jī)網(wǎng)站建設(shè)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 99r在线免费观看 | 国产午夜精品一区二区 | 欧美三级试看视频 | 五月天色婷婷中文影院 | 欧美三级网站在线 |