單元測試之pytest

2022-06-09 16:30:09 字數 3646 閱讀 1704

前提:需要安裝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 minidom

class 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-pytest
allure-pytest是pytest的乙個外掛程式,通過它我們可以生成allure所需要的用於生成測試報告的資料

@allure.feature # 用於描述被測試產品需求

@allure.story # 用於描述feature的使用者場景,即測試需求

with allure.step(): # 用於描述測試步驟,將會輸出到報告中

allure.attach # 用於向測試報告中輸入一些附加的資訊,通常是一些測試資料,截圖等

5.1.1:allure.feature

@allure.feature # 用於描述被測試產品需求
5.1.2:allure.story

@allure.story # 用於描述feature的使用者場景,即測試需求
案例

實現使用者登入功能,場景為登入成功和登入失敗

import pytest,allure,os

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函式可以將字串轉化成命令在伺服器上執行

pytest和allure效果展示

5.1.3:with allure.step()

用於描述測試步驟,將會輸出到報告中
5.1.4:allure.attach

用於向測試報告中輸入一些附加的資訊,通常是一些測試資料,截圖等
案例

實現產品資訊展示,車展中的各種車的品牌

import pytest,os,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)

pytest和allure效果展示

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或...