新聞中心
調(diào)用方法會(huì)影響可讀性。盡管 assertEqual() 方法名能夠表明要測試兩個(gè)值是否相等,但是代碼看起來仍然不像是比較,對(duì)于熟悉Python 操作符的開發(fā)人員,不如 Python 操作符那么明確。

站在用戶的角度思考問題,與客戶深入溝通,找到蠡縣網(wǎng)站設(shè)計(jì)與蠡縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋蠡縣地區(qū)。
第二,正如在本系列的第三篇文章中將看到的,新的測試框架現(xiàn)在知道如何檢查 assert 語句,從而查明造成測試失敗的條件。這意味著簡單的 assert 語句現(xiàn)在能夠產(chǎn)生有意義的測試失敗消息。
它提供的信息與調(diào)用 assertEqual() 等老方法的結(jié)果差不多。***,即使 assertEqual() 仍然是必要的,但是從測試模塊導(dǎo)入這個(gè)函數(shù)(而不是通過類繼承讓函數(shù)可用)肯定更簡單,更符合 Python 操作符的風(fēng)格。
實(shí)際上,在下面會(huì)看到,當(dāng) py.test 和 nose 要提供更多用來支持測試的例程時(shí),它們只需把這些例程定義為函數(shù),然后用戶可以把這些函數(shù)導(dǎo)入自己的代碼。當(dāng)然,如果作者確實(shí)需要通過例程緩存狀。
- # nose.tools support functions for writing tests
- assert_almost_equal(first, second, places=7, msg=None)
- assert_almost_equals(first, second, places=7, msg=None)
- assert_equal(first, second, msg=None)
- assert_equals(first, second, msg=None)
- assert_false(expr, msg=None)
- assert_not_almost_equal(first, second, places=7, msg=None)
- assert_not_almost_equals(first, second, places=7, msg=None)
- assert_not_equal(first, second, msg=None)
- assert_not_equals(first, second, msg=None)
- assert_true(expr, msg=None)
- eq_(a, b, msg=None)
- ok_(expr, msg=None)
但是,如果程序員希望編寫簡單的測試代碼,不愿意考慮 doctest 涉及的亂七八糟的東西,那么測試函數(shù)是很好的方法??傊?,測試函數(shù)可以極大地增強(qiáng)編寫測試的簡便性。程序員不需要記住、重寫或復(fù)制以前編寫的測試代碼,新的約定讓 Python 程序員能夠像編寫一般Python 操作符一樣編寫測試:只需打開一個(gè)空文件,然后輸入!
py.test 和 nose 框架都提供特殊的例程,這些例程可以簡化測試的編寫??梢哉J(rèn)為它們分別提供一種方便的測試 “方言”,可以用這些 “方言” 編寫測試。這會(huì)簡化測試的編寫并減少錯(cuò)誤,還會(huì)使測試更簡短、可讀性更好。
但是,使用這些例程還會(huì)導(dǎo)致一個(gè)重要的后果:您的測試與提供函數(shù)的框架捆綁在一起了,喪失了兼容性。因此,要權(quán)衡考慮方便性和兼容性。如果只使用笨拙的標(biāo)準(zhǔn)Python 操作符unittest 模塊從頭編寫所有測試,那么它們能夠在任何測試框架中運(yùn)行。
更進(jìn)一步,如果采用簡單的做法編寫測試函數(shù)(如上所述),那么測試至少能夠在 py.test 和 nose 中運(yùn)行。但是。如果開始使用某個(gè)測試框架特有的特性,那么如果以后另一個(gè)框架開發(fā)出了新的重要特性,您決定進(jìn)行框架遷移,就必須重寫測試。
py.test 和 nose 都為 TestCase 的 assertRaises() 方法提供了替代品。py.test 提供的版本比較新穎,它也可以接受要執(zhí)行的字符串,這更強(qiáng)大,因?yàn)榭梢詼y試引發(fā)異常的表達(dá)式,而不只是函數(shù)調(diào)用:
- # conveniences.py
- import math
- import py.test
- py.test.raises(OverflowError, math.log, 0)
- py.test.raises(ValueError, math.sqrt, -1)
- py.test.raises(ZeroDivisionError, "1 / 0")
- import nose.tools
- nose.tools.assert_raises(OverflowError, math.log, 0)
- nose.tools.assert_raises(ValueError, math.sqrt, -1)
- # No equivalent for third example!
在處理浮點(diǎn)數(shù)時(shí),如果希望測試能夠靈活地對(duì)待Python 操作符實(shí)現(xiàn),允許對(duì)浮點(diǎn)數(shù)的處理有細(xì)小的誤差,那么上面檢查近似值的例程尤其有意義。
分享文章:詳細(xì)說明Python操作符風(fēng)格
分享URL:http://www.5511xx.com/article/cdpcodp.html


咨詢
建站咨詢
