首先說下爲何要學pytest,在此以前相信你們已經掌握了python裏面的unittest單元測試框架,那再學一個框架確定是須要學習時間成本的。 剛開始個人心裏是拒絕的,我想我用unittest也能完成自動化測試,幹嗎要去學pytest呢?最近看到愈來愈多的招聘要求會pytest框架了,也有小夥伴出去面試說會unittest框架被鄙視的。 因此學此框架應該至少有如下2個理由,第一條已經足夠:html
python鄙視鏈:pytest 鄙視 > unittest 鄙視 > robotframework 鄙視 > 記流水帳 鄙視 > "hello world"小白python
pytest是python的一種單元測試框架,與python自帶的unittest測試框架相似,可是比unittest框架使用起來更簡潔,效率更高。根據pytest的官方網站介紹,它具備以下特色:面試
1.安裝方法session
pip install -U pytest框架
2.pip show pytest查看安裝版本函數
pip show pytest工具
3.也能夠pytest --version查看安裝的版本單元測試
pytest --version學習
This is pytest version 3.6.3, imported from d:\soft\python3.6\lib\site-packages\ pytest.py
1.新建一個test_sample.py文件,寫如下代碼測試
# content of test_sample.py def func(x): return x +1 def test_answer(): assert func(3)==5
2.打開test_sample.py所在的文件夾,cmd窗口輸入:pytest(或者輸入py.test也能夠)
D:\YOYO>pytest ============================= test session starts ============================= platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0 rootdir: D:\YOYO, inifile: collected 1 item test_sample.py F [100%] ================================== FAILURES =================================== _________________________________ test_answer _________________________________ def test_answer(): > assert func(3)==5 E assert 4 == 5 E + where 4 = func(3) test_sample.py:6: AssertionError ========================== 1 failed in 0.19 seconds ===========================
3.pytest運行規則:查找當前目錄及其子目錄下以test_*.py或*_test.py文件,找到文件後,在文件中找到以test開頭函數並執行。
1.前面是寫的一個test開頭的測試函數,當用例用多個的時候,寫函數就不太合適了。這時能夠把多個測試用例,寫到一個測試類裏。
# test_class.py class TestClass: def test_one(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check')
2.pytest會找到符合規則(test_.py和_test.py)全部測試,所以它發現兩個test_前綴功能。 若是隻想運行其中一個,能夠指定傳遞文件名test_class.py來運行模塊: 備註: -q, --quiet decrease verbosity( 顯示簡單結果)
py.test -q test_class.py
D:\YOYO>py.test -q test_class.py .F [100%] ================================== FAILURES =================================== _____________________________ TestClass.test_two ______________________________ self = <test_class.TestClass object at 0x00000000039F1828> def test_two(self): x = "hello" > assert hasattr(x, 'check') E AssertionError: assert False E + where False = hasattr('hello', 'check') test_class.py:11: AssertionError 1 failed, 1 passed in 0.04 seconds
第一次測試經過,第二次測試失敗。 您能夠在斷言中輕鬆查看失敗的緣由。
__init__
方法---------------------------------pytest結合selenium自動化完整版-------------------------
全書購買地址 https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b
做者:上海-悠悠 QQ交流羣:874033608
也能夠關注下個人我的公衆號:yoyoketang