前提:需要安裝pytest和pytest-html(生成html測試報告)
pip install pytest 和 pip install pytest-html
pytest單元測試中的類名和方法名必須是以test開頭,執行中只能找到test開頭的類和方法,比unittest更加嚴謹unittest:setup>> setupclass , teardown >> teardownclass(課堂作業)
pytest: setup, setup_class和teardown, teardown_class函式(和unittest執行效果一樣)
執行於測試方法的始末,即:執行一次測試函式會執行一次setup和teardown
執行於測試方法的始末,但是不管有多少測試函式都只執行一次setup_class和 teardown_class
pip install pytest-html
案例一pytest.main("模組.py")【執行指定模組下,執行所有test開頭的類和測試用例】
pytest.main(["--html=./report.html","模組.py"])
案例二執行指定模組指定類指定用例,冒號分割,並生成測試報告
pytest.main([『--html=./report.html』,『模組.py::類::test_a_001'])執行指定模組指定類指定用例,冒號分割,並生成測試報告
案例三直接執行pytest.main() 【自動查詢當前目錄下,以test開頭的檔案或者以
test結尾的py檔案】(課堂練習_test)
pytest.main([『--html=./report.html』])
pytst.main(['-x','--html=./report.html','t12est000.py'])
-x出現一條測試用例失敗就退出測試-v: 豐富資訊模式, 輸出更詳細的用例執行資訊
-s:顯示print內容
-q: 簡化結果資訊,不會顯示每個用例的檔名
擴充:跳過
使用@pytest.mark.skip()跳過該用例(函式)
@pytest.mark.skip()def test001(self):
assert 2==2
. 點號,表示用例通過f 表示失敗 failure
e 表示用例中存在異常 error
from xml.dom import minidomclass readxml():
def read_xml(self,filename,onename,twoname):
root =minidom.parse(filename)
firstnode =root.getelementsbytagname(onename)[0]
secondnode=firstnode.getelementsbytagname(twoname)[0].firstchild.data
return secondnode
allure
是一款輕量級並且非常靈活的開源測試報告框架。 它支援絕大多數測試框架, 例如testng、pytest、juint等。它簡單易用,易於整合。
首先要安裝allure
pip install allure-pytestallure-pytest是pytest的乙個外掛程式,通過它我們可以生成allure所需要的用於生成測試報告的資料
@allure.feature # 用於描述被測試產品需求5.1.1:allure.feature@allure.story # 用於描述feature的使用者場景,即測試需求
with allure.step(): # 用於描述測試步驟,將會輸出到報告中
allure.attach # 用於向測試報告中輸入一些附加的資訊,通常是一些測試資料,截圖等
@allure.feature # 用於描述被測試產品需求5.1.2:allure.story
@allure.story # 用於描述feature的使用者場景,即測試需求案例
實現使用者登入功能,場景為登入成功和登入失敗
import pytest,allure,ospytest和allure效果展示class testclass005():
@allure.feature("使用者登入功能")#用於定義被測試的功能,被測產品的需求點
@allure.story("登入成功") #用於定義被測功能的使用者場景,即子功能點
def test_success(self):
assert 1==1
@allure.feature("使用者登入功能")#用於定義被測試的功能,被測產品的需求點
@allure.story("登入失敗") #用於定義被測功能的使用者場景,即子功能點
def test_fail(self):
assert 1==2
if __name__ == '__main__':
pytest.main(['--alluredir', 'report/result', 'test_06.py']) #生成json型別的測試報告
split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean' #將測試報告轉為html格式
os.system(split) # system函式可以將字串轉化成命令在伺服器上執行
5.1.3:with allure.step()
用於描述測試步驟,將會輸出到報告中5.1.4:allure.attach
用於向測試報告中輸入一些附加的資訊,通常是一些測試資料,截圖等案例
實現產品資訊展示,車展中的各種車的品牌
import pytest,os,allurepytest和allure效果展示class testshop():
@allure.feature("購物車")
@allure.story("產品展示")
def testshow(self):
with allure.step("檢視哈吉利系列車資訊"):
allure.attach("博越","吉利")
with allure.step("檢視哈弗系列車資訊"):
allure.attach("h7","哈弗")
if __name__ == '__main__':
pytest.main(['--alluredir', 'report/result', 'test_07.py'])
split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
os.system(split)
Python單元測試框架 pytest
一 介紹 pytest是乙個非常成熟的全功能的python測試框架,主要特點有以下幾點 1 簡單靈活,容易上手 2 支援引數化 4 pytest具有很多第三方外掛程式,並且可以自定義擴充套件,比較好用的如pytest selenium 整合selenium pytest html 完美html測試報...
單元測試之Django單元測試
每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...
python 的單元測試框架pytest 其一
1,最簡單的測試 新建的檔案要以 test py或 test.py 的命名形式!content of test sample.py deffunc x return x 1 deftest answer assert func 3 5 執行測試pytest將在當前目錄及其子目錄中執行test py或...