Python自動化測試框架,誰才是你的唯一?

博為峰網校發表於2021-11-01

Python得天獨厚的優勢造就了一系列測試框架,在這些測試框架面前,孰優孰劣?具體該如何選擇?   加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

俗話說 “沒有最好的,只有最合適的”,今天我們就Python當前使用較為頻繁的4大主流自動化測試框架, 來一回比拼,從中挑選最為合適你當前專案需求的那一款。

·Robot Framework

·Unittest

·Nose2

·Pytest

1.框架初探

Robot Framework

Robot Framework,簡稱RF,是一個基於Python的開源自動化測試框架,以關鍵字形式來建立測試用例。其表格樣式的用例編寫模式,豐富的庫和工具集,以及其並行測試等強大功能,使得RF 在測試人員中非常受歡迎。

RF主要應用於驗收測試和測試驅動開發(Test-driven development)這兩個場景。此外,RF還支援在Windows、Mac OS和Linux等跨平臺上進行桌面應用、移動應用、Web應用等的自動化測試。

【 Robot Framework —— Demo】

*** Settings ***

Library SeleniumLibrary

*** Variables ***

${SERVER} localhost:7272

${BROWSER} Firefox

${DELAY} 0

${VALID USER} demo

${VALID PASSWORD} mode

${LOGIN URL} {SERVER}/

${WELCOME URL} {SERVER}/welcome.html

${ERROR URL} {SERVER}/error.html

*** Keywords ***

Open Browser To Login Page

Open Browser ${LOGIN URL} ${BROWSER}

Maximize Browser Window

Set Selenium Speed ${DELAY}

Login Page Should Be Open

Title Should Be Login Page

Go To Login Page

Go To ${LOGIN URL}

Login Page Should Be Open

Input Username

[Arguments] ${username}

Input Text username_field ${username}

Input Password

[Arguments] ${password}

Input Text password_field ${password}

Submit Credentials

Click Button login_button

Welcome Page Should Be Open

Location Should Be ${WELCOME URL}

Title Should Be Welcome Page

Unittest

Unittest是一個基於Python的自動化單元測試框架,屬於Python標準庫中的一員,支援測試套件的複用。 只需在測試指令碼中匯入Unittest庫,測試人員就可以自定義測試類,建立測試用例,通過unittest.main()執行所有測試用例。

【 Unittest —— Demo】

import unittest

def add(x, y):

return x + y

class Test(unittest.TestCase):

def test_add_001(self):

self.assertEquals(add(4, 5), 9)

def test_add_002(self)

self.assertNotEqual(add(1,2),10)

if __name__ == '__main__':

unittest.main()

常用包/方法如下:

Nose2

Nose2繼承自Nose,同樣是一個基於Python的單元測試框架, 可以視為Unittest框架的擴充,因此,Nose2下可以執行Unittest編寫的測試用例。 Nose2有豐富的外掛,集編寫測試用例,異常處理等多種功能。相較於上面提到的Unittest和Robot Framework而言,卻沒那麼高的普及度,但仍不失為一款好用的開源測試框架。

【 Nose2 —— Demo】

from mynum import *

import nose

def add(x, y):

return x + y

def test_add_integers():

assert add(5, 3) == 8

def test_add_floats():

assert add(1.5, 2.5) == 4

def test_add_strings():

nose.tools.assert_raises(AssertionError, add, 'hello', 'nose2')

if __name__ == '__main__':

nose.run()

常用包/方法如下:

Pytest

Pytest是Python另一款非常熱門的開源測試框架。其語法簡單,且擁有豐富的外掛,可應用於功能測試,API測試,資料庫及UI測試等多種測試型別。

【 Pytest —— Demo1 】

import pytest

def test_demo_method1():

x = 1

y = 2

assert x+1 == y, "test pass"

def test_demo_method2():

x = 6

y = 3

assert x-1 == y+2, "test failed"

常用包/方法如下:

……

因作者版權要求,想要閱讀完整文章,可以 加我VX:atstudy-js 私信“文章”,小編即可傳送給你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2840077/,如需轉載,請註明出處,否則將追究法律責任。

相關文章