測(cè)試目錄
項(xiàng)目的整體結(jié)構(gòu)可以參考“軟件目錄開(kāi)發(fā)規(guī)范”,這里單說(shuō)測(cè)試目錄。一般都是在項(xiàng)目里單獨(dú)創(chuàng)建一個(gè)測(cè)試目錄,目錄名就是“tests”。
關(guān)于目錄的位置,一種建議是,在項(xiàng)目名(假設(shè)項(xiàng)目名是Foo)的一級(jí)子目錄下創(chuàng)建二級(jí)子目錄 “Foo/foo/tests” 。但是這樣可能是因?yàn)橛闷饋?lái)不方便,有很多是按下面的做法。不過(guò)下面的示例我還是用這個(gè)方法來(lái)創(chuàng)建測(cè)試目錄。
還可以把測(cè)試目錄向上移一層,作為一級(jí)子目錄,直接創(chuàng)建在項(xiàng)目之下 “Foo/tests”。參考django、scrapy、flask都是這樣的做法。
測(cè)試函數(shù)
標(biāo)題的意思是對(duì)函數(shù)(def)進(jìn)行測(cè)試,相對(duì)于測(cè)試類(class)。
學(xué)習(xí)測(cè)試,得有要測(cè)試的代碼。下面是一個(gè)簡(jiǎn)單的函數(shù),接收城市名和國(guó)家名,返回一個(gè)格式為“City, Country“這樣的字符串:
# UnitTest/unit_test/utils/city_functions.pydef get_city_info(city, country): city_info = "%s, %s" % (city, country) return city_info.title()
接下來(lái)就對(duì)上面的這個(gè)函數(shù)進(jìn)行測(cè)試。
手動(dòng)測(cè)試
現(xiàn)在來(lái)寫(xiě)一個(gè)使用這個(gè)函數(shù)的程序:
# UnitTest/unit_test/test/cities.pytry: from unit_test.utils.city_functions import get_city_infoexcept ModuleNotFoundError: import sys sys.path.append('../..') from unit_test.utils.city_functions import get_city_infoprint("Enter 'q' at any time to quit.")while True: city = input("city name: ") if city == 'q': break country = input("country name: ") if country == 'q': break fullname = get_city_info(city, country) print("/tcity info:", fullname)
然后運(yùn)行的結(jié)果:
Enter 'q' at any time to quit.
city name: shanghai
country name: china
city info: Shanghai, China
city name: qProcess finished with exit code 0
上面這樣是手動(dòng)測(cè)試,還是得有一種自動(dòng)測(cè)試函數(shù)輸出的高效方式。如果能夠?qū)et_fullname()進(jìn)行自動(dòng)測(cè)試,就能始終確信,給這個(gè)函數(shù)提供測(cè)試過(guò)的姓名后,它能返回正確的結(jié)果。尤其是在對(duì)函數(shù)進(jìn)行修改的前后。
模塊導(dǎo)入路徑的問(wèn)題
PyCharm會(huì)自動(dòng)把項(xiàng)目目錄加到環(huán)境變量里去,在PyCharm里執(zhí)行都沒(méi)問(wèn)題。但是如果不用PyCharm而是單獨(dú)運(yùn)行,這個(gè)目錄結(jié)構(gòu)應(yīng)該會(huì)有點(diǎn)問(wèn)題,會(huì)找不到需要測(cè)試的函數(shù)。簡(jiǎn)單點(diǎn)就是把測(cè)試用例和被測(cè)試的函數(shù)放到同一個(gè)目錄里,然后改一下 from import 就可以正常運(yùn)行了?;蛘咦约菏謩?dòng)添加環(huán)境變量,就像例子里那樣。
單元測(cè)試-unittest
Python標(biāo)準(zhǔn)庫(kù)中的模塊unittest提供了代碼測(cè)試工具。
創(chuàng)建測(cè)試用例
為函數(shù)編寫(xiě)測(cè)試用例,可先導(dǎo)入模塊unittest以及要測(cè)試的函數(shù),再創(chuàng)建一個(gè)繼承unittest.TestCase的類,并編寫(xiě)一系列方法對(duì)函數(shù)行為的不同方面進(jìn)行測(cè)試。
新聞熱點(diǎn)
疑難解答
圖片精選