傳統(tǒng)測試框架中,類似setup和teardown的功能是必不可少的。做過測試的小伙伴們肯定知道,在運行一條測試用例時,總會在測試前要做一些預(yù)配置(configuration)或者預(yù)條件(precondition),然后在測試完后就要恢復(fù)(restore)到初始狀態(tài)。那么setup和teardown在你的自動化代碼里就會做這些事。
其實setup/teardown也保證測試用例的獨立性,尤其在自動化測試用例編寫時,獨立性尤其重要。
剛開始做自動化測試的同學(xué)們,在設(shè)計用例時很容易犯一個錯誤——連續(xù)跑一套測試用例沒問題,但是跑單個用例,就報錯了,原來報錯的case的配置依賴之前的。
Unittest支持類級別setupclass/teardownclass和類方法級別setUp/testDown, Pytest也有類似的接口,而且支持的scope更加多。
01
函數(shù)級別之setup/teardown
我們先從簡單的函數(shù)級別開始,Pytest 提供 setup_function/teardown_function,它對測試函數(shù)有效,每個測試函數(shù)前后調(diào)用一次。
test_add.py

運行結(jié)果:
02
類級別之setup/teardown
對于類級別,Pytest 提供 setup_class/teardown_class, ?對類有效,類中前后調(diào)用一次。
test_minus.py

運行結(jié)果:
03
類測試方法之setup/teardown
對于類測試方法,Pytest提供setup_method/teardown_method和setup/teardown(這個與unittest一樣),兩者效果沒有區(qū)別,用一種即可。對類測試方法有效,每個測試類測試方法前后調(diào)用一次。這里我們舉例setup_method/teardown_method
test_minus.py

運行結(jié)果:
04
模塊級別之setup/teardown
Pytest還提供模塊級的, 接口名字是setup_module/teardown_module,模塊前后調(diào)用一次。
test_add.py

運行結(jié)果:
綜合運用
最后我們來個大亂燉,把所有用法集中在一個文件里。
test_all.py


運行結(jié)果:
如果你有使用unittest的經(jīng)驗,那么上述對你來說是非常容易接受的,但是很可惜,我們并不推薦使用它們,因為pytest提供了一個更強大的武器,我們會在下一篇中為大家介紹。
閱讀測試?yán)碚摚瑴y試管理,自動化測試和持續(xù)集成的更多文章,可以關(guān)注本人的公眾號哦,希望和能大家一起進(jìn)步。
微信公眾號是LightSoftwareTest