目錄
pytest測試框架 執行方式
以函數的方式簡單執行
先了解一下Pytest的執行的方式
test_pytest.py
import pytest
def test_001():
print("test_01")
def test_002():
print("test_02")
if __name__ == '__main__':
#main方法第一個參數-v打印詳細信息, 第二個執行的模塊名稱
pytest.main(['-v',"test_pytest.py"])
看一下輸出結果 上面劃紅線的是執行了多少個測試用例 中間的是執行的測試模塊 下面的是有幾個是通過的以及時間
函數或方法名的命名規範
函數名或類的方法名須以test爲開頭否則無法執行 現在演示一下
import pytest
def test_001():
print("test_01")
def test_002():
print("test_02")
def add_test():
print("add_test")
if __name__ == '__main__':
pytest.main(['-v',"test_pytest.py"])
看一下到底能否運行
可以看到還是兩個方法 add_test並沒有運行
DOS命令執行
切換到當前項目的路徑下 輸入pytest -v test_pytest.py 執行
斷言方法
pytest 斷言使用python的原生斷言方法 assert
assert幾種斷言方法
1、 == 內容和類型必須同時滿足相等
2 、in 實際結果包含預期結果
3、 is 斷言前後兩個值 相等
assert ==斷言
斷言 x + y相加後 實際結果是否等於預期結果
def add(x,y):
return x + x
def test_add():
assert add(1,1) == 2
執行後 在控制檯上的顯示
如果把預期結果故意改錯 看看 控制檯會顯示什麼
這個錯誤 很明顯了
assert in 包含斷言
斷言str1字符串中是否包含GO
str1 = "python GO PHP JAVA "
def test_in():
assert "GO" in str1
assert is 斷言前後的值相等
判斷兩個字符串是否相等
str1 = "admin"
str2 ="admin"
def test_is():
assert str2 is str1
用== 也是一樣的
str1 = "admin"
str2 ="admin"
def test_is():
assert str2 == str1
pytest 常用命令詳解
1、-v輸出詳細的信息
2、-s 輸出測試函數或測試方法print內容
3、-k 按分類執行測試點
4、-m 進行分組執行
5、-x 執行失敗立刻停止
6、–maxfail執行失敗的最大次數
7、–tb=line 錯誤信息在一行展示
pytest -v輸出詳細的信息
這個命令前面已經展示後很多次了 所以這裏把-v去掉看看執行後 會顯示什麼 做個對比
上面的是去掉-v後 下面是加上-v 參數執行 有-v的可以顯示具體那個函數方法執行成功或失敗
pytest -s輸出測試函數或測試方法print內容
輸入print語句內容 比如說要打印查看一下 用戶的id
def test_id():
userid =1234
print(userid)
pytest -k 按分類執行測試點
如果有十個測試用例 現在有需求只需要執行5個用例 那麼可以用裝飾器給用例分成兩個分類 分別執行
@python.mark 是固定寫法 後面的是自己起的名字 現在分了兩個類 run和stop
import pytest
@pytest.mark.run
def test_001():
print("test_01")
@pytest.mark.run
def test_002():
print("test_02")
@pytest.mark.run
def test_03():
print("add_test")
def add(x,y):
return x + x
@pytest.mark.stop
def test_add():
assert add(1,1) == 2
@pytest.mark.stop
def test_id():
userid =1234
print(userid)
現在只執行run分類的方法或函數
pytest -v -k “run” test_pytest.py 執行
執行多個測試分類
-m 進行分組執行
-m 和-k 執行起來 區別就是 分類不需要帶引號 其他都差不多
-x 執行失敗立刻停止
不加-x 與加上-x的前後對比 沒有-x 執行失敗後 後面的會繼續執行 帶上-x後 執行失敗後 後面的不會繼續執行
–maxfail執行失敗的最大次數
如果設定最大失敗的次數是2 那麼如果兩個用例執行失敗 後面的會停止執行 如果是2次以下會繼續執行
–tb=line 錯誤信息在一行展示
沒有這個命令的話 如果有大量的用例執行錯誤 那麼 查看報錯信息就很費勁了
pytest API測試實戰
以登錄接口爲例
import pytest
import requests
def test_login():
r = requests.post(
url="http://127.0.0.1:5000/login/",
data={
"phone":1232432241,
"password":123456
},
headers =
{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
)
print(r.text)
assert r.json()['data']['id'] == 28239 and r.json()['msg'] == "登錄成功"
if __name__ == '__main__':
pytest.main(["-v","test_pytest.py"])