當(dāng)你寫(xiě)完測(cè)試代碼后,就想立馬躍躍欲試運(yùn)行自己的成果了吧护昧』昶可是擺在你面前的問(wèn)題是,如何讓pytest去執(zhí)行你想要的測(cè)試用例或者用例集惋耙。
?
在unittest中捣炬,常用的套路就是創(chuàng)建一個(gè)測(cè)試套對(duì)象,然后往這個(gè)測(cè)試套對(duì)象里加你想要的測(cè)試用例怠晴,最后用runner對(duì)象去執(zhí)行遥金。
那pytest是怎么樣的呢?我們來(lái)一個(gè)非常微型的項(xiàng)目實(shí)戰(zhàn)蒜田,但不管微型稿械、小型還是大型項(xiàng)目,套路基本上是差不多的冲粤。
項(xiàng)目目錄結(jié)構(gòu)
這個(gè)項(xiàng)目包含了一個(gè)calculator.py和一個(gè)test包美莫,test包下有四個(gè)測(cè)試腳本。
calculator.py,實(shí)現(xiàn)了一個(gè)非常簡(jiǎn)單的計(jì)算器類
test_add.py
minus_add.py
test_multiply.py
divide.py
現(xiàn)在我們?cè)诳刂婆_(tái)里切到項(xiàng)目根目錄梯捕,執(zhí)行命令pytest會(huì)發(fā)生什么呢厢呵,你覺(jué)得哪些用例會(huì)被執(zhí)行到。?根據(jù)下面的pytest測(cè)試用例發(fā)現(xiàn)規(guī)則傀顾,大家可以先思考一下襟铭。
可以在命令行上指定文件名或目錄名。如果不指定短曾,則使用當(dāng)前目錄寒砖。
遞歸地在目錄和所有子目錄中查找測(cè)試模塊。
測(cè)試模塊是一個(gè)文件嫉拐,其名稱以test_開(kāi)頭或以_test結(jié)尾哩都。
在測(cè)試模塊中查找以test開(kāi)頭的函數(shù)。
在測(cè)試模塊中查找名稱以Test開(kāi)始的類婉徘, 在該類中查找以test開(kāi)頭的方法漠嵌,但是該類中不能有__init__方法咐汞。
現(xiàn)在答案揭曉
5個(gè)case被發(fā)現(xiàn),它們是test_add_int, test_add_float,test_minus_int,test_minus_float 和test_multiply_int儒鹿。
按照規(guī)則首先會(huì)在當(dāng)前目錄下遞歸查找測(cè)試模塊化撕,這里有三個(gè)文件符合test_add.py, test_minus.py 和test_multiply.py。
然后查找測(cè)試函數(shù)或者測(cè)試類下的測(cè)試方法挺身,test_add.py模塊下test_add_int 和?test_add_float被命中侯谁;
test_minus.py模塊下test_minus_int和test_minus_float被命中锌仅;
test_multiply.py模塊下Test_minus測(cè)試類被命中章钾,同時(shí)該測(cè)試類下的test_multipy_int被命中。而其他并未符合規(guī)則热芹,所以5個(gè)用例被找到了贱傀。
有時(shí)候你不想運(yùn)行所有的測(cè)試用例,而是只想運(yùn)行某一個(gè)測(cè)試用例或某一個(gè)測(cè)試用例集伊脓。
執(zhí)行一個(gè)測(cè)試模塊:pytest 測(cè)試目錄/模式模塊
執(zhí)行某個(gè)測(cè)試模塊下的測(cè)試函數(shù):pytest測(cè)試目錄/模式模塊::測(cè)試方法
執(zhí)行某個(gè)測(cè)試模塊下的測(cè)試類:pytest?測(cè)試目錄/模式模塊::測(cè)試類
執(zhí)行某個(gè)測(cè)試模塊下測(cè)試類的測(cè)試方法:pytest?測(cè)試目錄/模式模塊::測(cè)試類::測(cè)試方法
到這里小艾已經(jīng)為大家介紹了pytest的測(cè)試方法發(fā)現(xiàn)規(guī)則和執(zhí)行指定測(cè)試用例的用法府寒,這些我想在項(xiàng)目中已經(jīng)夠用。
希望同學(xué)們也可以在自己的環(huán)境中實(shí)踐加深印象和理解报腔。
閱讀測(cè)試?yán)碚撝晟Γ瑴y(cè)試管理,自動(dòng)化測(cè)試和持續(xù)集成的更多文章纯蛾,可以關(guān)注本人的公眾號(hào)哦纤房,希望和能大家一起進(jìn)步。
微信公眾號(hào)是LightSoftwareTest