1、自動化主流框架介紹
當前業界基于python語言的自動化框架主要包括:Unittest,Pytest這2種,其中:Unittest是Python標
準庫中自帶的單元測試框架,Unittest有時候也被稱為PyUnit,就像JUnit是Java語言的標準單元測試框
架一樣,Unittest則是Python語言的標準單元測試框架;Pytest是Python的另一個第三方單元測試庫。
它的目的是讓單元測試變得更容易,并且也能擴展到支持應用層面復雜的功能測試。
2.Pytest與Unittest的區別對比
3.Pytest下測試用例規則
盡管pytest下關于測試用例的方法、類、文件可以進行搜集規則的配置,但是默認的寫法是:
1.pytest將在當前目錄及其子目錄中運行所有格式為test.py或者test.py文件 2.測試方法/測試函數 默認必須是test開頭
3.測試類必須是Test開頭
4. 測試類不能有構造方法 init
希望大家可以默認使用上面的規則,與pytest默認的規則一致,以免產生其他問題
4.pytest的安裝
pytest安裝使用pip安裝即可
#安裝pytest
pip install pytest
#驗證安裝是否成功
pytest --version
?Pycharm運行模式設置
5.pytest中的斷言
pytest中的斷言使用assert結合python中的運算符進行斷言,常見的斷言有:
assert xx :判斷 xx 為真 is Ture
? assert not xx :判斷 xx 不為真 is not True / is False
? assert a in b :判斷 b 包含 a
? assert a not in b :判斷 b不包含 a
? assert a == b :判斷 a 等于 b
? assert a != b :判斷 a 不等于 b
? assert a >= b :判斷 a 大于等于 b
? assert a <= b :判斷 a 小于等于 b
? assert a > b :判斷 a 大于 b
? assert a < b :判斷 a 小于 b
其中 還可以在條件中加上 or (或者)、and( 和)的條件 。
?
6.pytest常用運行參數
pytest執行命令如下:
創建test_demo2.py文件,內容下
import pytest
def test_001():
print('aaaaaaaaaaaa')
pass
class Test_001:
def test_a_001(self):
pass
if __name__ == '__main__':
pytest.main()
不加任何參數,執行的命令:pytest.main(),顯示最簡單的運行結果
?-v:用于顯示用例執行的具體執行信息
-s:用于顯示用例中print()打印信息到控制臺
?
-k=字符串:用于顯示包含指定字符串的用例
?
-q:簡化輸出信息?
-x:如果出現一條測試用例失敗,則退出測試
?
目錄路徑/文件名::類名::方法':名指定目錄以及特定類或方法執行
?
--maxfail=num:設置測試用例失敗的閥值,失敗的用例數超過閥值,測試執行結束
?
?
-m=標記:執行標記的用例
-n=數字/auto:多線程運行用例,指定使用幾個進程跑,如果未auto會自動匹配機器的CPU邏輯核數
跑
?
--reruns=失敗重跑次數,--reruns-delay=間隔秒數:失敗重跑設置?
--html=指定路徑/報告名稱.html:生成pytest-html報告
?
7.pytest.ini配置文件的使用
平時在執行的使用臨時添加這些常用運行產生可能會記不住,不便于使用;通常可以將這些常用參數寫
入pytest.ini(文件名稱及類型不能變更)配置文件中,讓pytest框架自動失敗里面的執行配置,方便使 用的使用,想要控制用例的執行,只需要修改參數即可,一般建議在項目目錄的根目錄下創建pytest.ini 文件
a.如果需要在pytest.ini文件中寫中文的注釋,有可能會亂碼,解決方案如下:
新建pytest.ini文件后,選擇文件,讓后點擊Pycharm上的file,找到File Properties,選擇下面的File
Encoding,在文件編碼語言中選擇GBK,點擊convert即可
b.pytestl.ini文件具體內容如下:
[pytest]
;-s:用于顯示用例中print()打印信息到控制臺
;-v:用于顯示用例執行的具體執行信息
;-k=字符串:用于顯示包含指定字符串的用例
;-q:簡化輸出信息
;-x:如果出現一條測試用例失敗,則退出測試
;-l:測試用例失敗時追蹤堆棧信息,所有局部變量及其值都會顯示出來
;-m=標記:執行標記的用例,一般不建議直接在addopts鍵下中跑,可以單獨使用markers鍵下配置
;-n=數字/auto:多線程運行用例,指定使用幾個進程跑,如果未auto會自動匹配機器的CPU邏輯核數跑,需
要先安裝pytest-xdist;pip install pytest-xdist
;--maxfail=num:設置測試用例失敗的閥值,失敗的用例數超過閥值,測試執行結束
;--reruns=失敗重跑次數,--reruns-delay=間隔秒數:失敗重跑設置
;--tb=style,style的值可以為no,line,short,no:不打印失敗信息,line:一行顯示錯誤信息,
short:簡短顯示錯誤信息
;--html=指定路徑/報告名稱.html:生成pytest-html報告
;----self-contained-html:建議添加,否則pytest測試報告的css文件是獨立的
;要注釋常用操作行為,可以在操作選項前面加上; 如下面的;-n=auto
;addopts:配置命令行選項
addopts = -s
? ? ? ? ? ? ? ? ?-v
? ? ? ? ? ? ? ? ?-l
? ? ? ? ? ? ? ? ?;?-m=smoke
? ? ? ? ? ? ? ? ?;?-n=auto
? ? ? ? ? ? ? ?--tb=short
? ? ? ? ? ? ? ?--reruns=3
? ? ? ? ? ? ? ?--reruns-delay=2
? ? ? ? ? ? ? --html=./report/html_report.html
? ? ? ? ? ? ? --self-contained-html
;testpaths:讀取測試用例的起始文件夾,多個路徑用空格分隔。注意:這些目錄下不能出現相同文件名,否
則會報錯
testpaths = ./testcases
;norecursedirs = .* venv test_001 *.egg dist build:指定不運行對應目錄下的測試用例,當與
testpaths目錄一致時,以testpaths目錄為主
norecursedirs = .* venv demo *.egg dist build
;--------------下面一般不建議寫入配置文件,因為測試用例一般是批量執行的-------------------
;python_files:設置讀取測試用例文件名的規則,運行指定文件名下的用例,可以改變文件名稱,如:
aaa.py
;python_files = test_*.py
;python_files:設置讀取測試用例類的規則,運行指定類名下的用例,可以改變文件名稱,如:Beeee*
;python_Class = Test*
;python_functions:設置讀取測試用例方法的規則,運行指定測試用例名,可以改變文件名稱,如:
abcd*
;python_functions = test
;-------------------------------------------------------------------------------
;markers:注冊指定的標記,用于測試用例中去使用,如果測試用例使用未注冊的標記,會給出警告
markers =
smoke : 冒煙測試用例
aaaa : 新增其他
ssss : XXXXXXXXXX
?配置好后,后續使用pytest執行測試用例,只需要執行:pytest.main()即可
?