pytest特點(diǎn)
pytest 是一個(gè)非常成熟的全功能的Python測(cè)試框架
可以勝任unittest能做到的各種場(chǎng)景,比如:?jiǎn)卧獪y(cè)試、接口測(cè)試畅卓、web測(cè)試等等
pytest更是一個(gè)插件化平臺(tái)拗小,這也是它比unittest更強(qiáng)大的地方。多年來(lái)拦耐,已經(jīng)有大量的第三方插件擴(kuò)展和增強(qiáng)它的功能
你也可以根據(jù)自身的需求,定制化開(kāi)發(fā)自己的插件
總而言之见剩,pytest使用更加簡(jiǎn)單杀糯、靈活。
安裝
切換到scripts 目錄下苍苞,運(yùn)行命令:pip install pytest固翰,查看版本:pytest --version
pycharm中運(yùn)行 pytest
設(shè)置 setting-tools-Python Intergrated Tools --Default test runner 選擇 pytest
第一個(gè)demo test_demo.py
# _*_ coding:utf-8 _*_
import pytest
def add(x):
return x + 2 ;
class TestClass(object):
#測(cè)試是否相等
def test_add(self):
assert add(3) ==5
def test_in(self):
a ='hello word'
b = 'he'
assert b in a
def test_not_in(self):
a = 'hello'
b = 'hi'
assert b not in a
if __name__ == '__main__':
pytest.main(['-s','test_demo.py'])
運(yùn)行結(jié)果:
Pytest用例的設(shè)計(jì)原則
文件名以 test_.py 文件和test.py
以 test 開(kāi)頭的函數(shù)
以 Test 開(kāi)頭的類(lèi),不能包含 init 方法
以 test_ 開(kāi)頭的類(lèi)里面的方法
所有的包 pakege 必項(xiàng)要有init.py 文件
Pytest執(zhí)行用例規(guī)則
下面以windows系統(tǒng)為例羹呵,使用命令來(lái)來(lái)執(zhí)行pytest
1骂际、指定目錄下的所有用例
pytest
2、執(zhí)行某一個(gè)py文件下用例
pytest 文件名.py
3冈欢、運(yùn)行test_demo.py文件中模塊里面的某個(gè)函數(shù),或者某個(gè)類(lèi)歉铝,某個(gè)類(lèi)里面的方法
說(shuō)明:加v和不加-v都可以,加-v的話(huà)凑耻,打印的信息更詳細(xì)
pytest -v test_demo.py::TestClass::test_add
pytest test_demo.py::TestClass::test_not_in
pytest test_demo.py::test_in
4太示、運(yùn)行test_demo.py 模塊里面,測(cè)試類(lèi)里面的某個(gè)方法
pytest test_demo.py::test_in
5、-m 標(biāo)記表達(dá)式(后面有詳解)
pytest -m login
將運(yùn)行用 @pytest.mark.login 裝飾器修飾的所有測(cè)試香浩,后面有詳解!
6类缤、-q 簡(jiǎn)單打印,只打印測(cè)試用例的執(zhí)行結(jié)果
pytest -q test_demo.py
7邻吭、-s 詳細(xì)打印
pytest -s test_demo.py
8餐弱、-x 遇到錯(cuò)誤時(shí)停止測(cè)試
pytest test_demo.py -x
9、—maxfail=num囱晴,當(dāng)用例錯(cuò)誤個(gè)數(shù)達(dá)到指定數(shù)量時(shí)膏蚓,停止測(cè)試
pytest test_demo.py --maxfail=1
10、-k 匹配用例名稱(chēng)
pytest -s -k _in test_demo.py
11畸写、-k 根據(jù)用例名稱(chēng)排除某些用例
pytest -s -k "not _in" test_demo.py
12驮瞧、-k 同時(shí)匹配不同的用例名稱(chēng)
pytest -s -k "add or _in" test_demo.py