唐山市住房和城鄉(xiāng)建設(shè)局門戶網(wǎng)站如何讓百度收錄
前言
pytest到目前為止還沒有翻譯的比較好全面的使用文檔,很多英文不太好的小伙伴,在學習時看英文文檔還是很吃力。本來去年就計劃寫pytest詳細的使用文檔的,由于時間關(guān)系一直擱置,直到今天才開始寫。本文是第一篇,主要介紹pytest的入門使用,后續(xù)會分篇針對pytest中的各個功能出詳細的使用教程。
一、環(huán)境安裝
pytest是python中的第三方庫,使用之前需要先安裝,在命令行中運行以下安裝命令 :
pip insatll pytest
檢查安裝是否成功以及安裝的版本,命令行命令如下:
pytest --version
執(zhí)行上述命令,能夠輸出版本信息,那就說明安裝成功啦。
二、用例編寫
當我們通過pytest執(zhí)行用例時,pytest會自動遞歸遍歷執(zhí)行路徑下所有的目錄,根據(jù)pytest中默認用例的識別的規(guī)則,自動收集測試用例。所有在使用pytest編寫測試用例之前,我們首先需要了解一下pytest收集用例時默認的用例識別規(guī)則。
1、默認的用例識別的規(guī)則
-
1、用例文件:所有文件名為
test_
開頭 或者_test
開頭的文件會被識別為用例文件。 -
2:用例類,測試文件中每個Test開頭的類就是一個測試用例類。
-
3、測試用例:測試類中每個test開頭的方法就是一條測試用例,測試文件中每個test開頭的函數(shù)也是一條測試用例,
備注:上述默認的用例查找規(guī)則,可在pytest的配置文件進行修改(后續(xù)章節(jié)會詳細介紹配置文件的使用)
另外pytest兼容unittest,以unittest的用例編寫規(guī)范寫的用例,pytest都能夠識別出來
通過了解上述pytest中用例識別的規(guī)則,可以知道pytest中用例編寫,能使用函數(shù)的形式,也能使用類的形式,那么接下來就分別給大家介紹一下這兩種方式編寫用例。
2、函數(shù)形式編寫用例
規(guī)則:用例方法名以test開頭即可
# \testcases\test_demo1.py def test_demo(): assert 100 == 100
使用命令
pytest
就可以執(zhí)行測試函數(shù),輸出結(jié)果如下:
C:\testcases>pytest
======================test session starts ======================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins: testreport-1.1.2
collected 1 item
test_demo1.py . [100%]
====================== 1 passed in 0.26s ======================
3、以類的形式編寫用例
規(guī)則: 測試類命名以Test開頭,用例方法以test開頭
# test_demo2.py
class TestDome:def test_demo1(self):assert 11 == 11def test_demo(self):assert 22 == 21
命令
pytest
運行上述用例,結(jié)果如下:
====================== test session starts ======================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins: testreport-1.1.2
collected 2 items
test_demo1.py .F [100%]
====================== FAILURES ======================
___________ TestDome.test_demo ____________
self = <test_demo1.TestDome object at 0x0445F450>def test_demo(self):
> assert 22 == 21
E assert 22 == 21
test_demo1.py:25: AssertionError
====================== short test summary info =======================
FAILED test_demo1.py::TestDome::test_demo - assert 22 == 21
====================== 1 failed, 1 passed in 0.53s ======================
上面的運行結(jié)果可以看出來,一條用例執(zhí)行通過,一條執(zhí)行失敗
三、執(zhí)行測試
在上面我們使用的是 pytest這個命令去執(zhí)行測試用例。關(guān)于pytest執(zhí)行測試,有兩種方式,一種是命令行通過pytest這個命令執(zhí)行,另外在代碼中可以通過pytest.main()
這個方法來執(zhí)行測試。接下來就和大家分別詳細的介紹一下pytest執(zhí)行測試的方式和常用的參數(shù)
1、執(zhí)行參數(shù)
測試用例
# 測試用例
class TestDome:def test_demo1(self):print('----測試用例執(zhí)行-----------')assert 11 == 11
參數(shù)
-v
: 顯示測試的詳細參數(shù)信息
C:\testcases>pytest -v
========================== test session starts ==========================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
cachedir: .pytest_cache
rootdir: C:\git_project\pytest-report-me-main\testcases
plugins: testreport-1.1.2
collected 1 item test_demo1.py::TestDome::test_demo1 PASSED [100%]
========================== 1 passed in 0.27s ==========================
參數(shù)
-s
: 顯示測試執(zhí)行的輸出信息
C:\testcases>pytest -s
=========================== test session starts ===========================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins: testreport-1.1.2
collected 1 item
test_demo1.py::TestDome::test_demo1 ----測試用例執(zhí)行---輸出1--------
----測試用例執(zhí)行---輸出2--------
PASSED
=========================== 1 passed in 0.28s ===========================
2、pytest.main執(zhí)行的參數(shù)傳遞
pytest.main方法執(zhí)行測試參數(shù)傳遞方式:
所以的參數(shù)放在列表中,每個參數(shù)就是列表中的一個元素
pytest.main(['-v','-s'])
詳細的參數(shù)可以使用命令
pytest -h
查看
3、指定執(zhí)行的測試目錄
命令
pytest 測試目錄路徑
pytest testcase/
pytest會執(zhí)行指定目錄路徑下所有的測試用例
4、指定執(zhí)行的測試文件
命令
pytest 測試文件路徑
pytest testcase/test_demo1.py
pytest會執(zhí)行指定測試文件中下所有的測試用例
5、指定執(zhí)行的測試類
命令
pytest 測試文件::測試類
pytest testcase/test_demo1.py::TestClass
pytest會執(zhí)行指定測試類里面所有的測試用例
6、指定執(zhí)行的測試用例
命令
pytest 測試文件::測試類::測試方法
pytest testcase/test_demo1.py::TestClass::test_method
pytest會執(zhí)行指定的測試方法
基本的入門就給大家介紹到這里,從一篇開始給大家詳細介紹pytest的相關(guān)特性