從小白變高手,這7個超實用的Python自動化測試框架請收好!
隨著技術的進步和自動化技術的出現,市面上出現了一些自動化測試框架。只需要進行一些適用性和效率引數的調整,這些自動化測試框架就能夠開箱即用,大大節省了開發時間。而且由於這些框架被廣泛使用,他們具有很好的健壯性,並且具有廣泛多樣的用例集和技術來輕易發現微小的缺陷。今天,我們將看一看常見的 Python 自動化測試框架。
常見的測試框架
1、Unittest
unittest是Python內建的標準類庫。它的API跟Java的JUnit、.net的NUnit,C++的CppUnit很相似。
通過繼承unittest.TestCase來建立一個測試用例。
舉個例:
import unittest
def fun(x):
return x + 1
class MyTest(unittest.TestCase):
def test(self):
self.assertEqual(fun(3), 4)
執行後成功。
但是,如果將期望的結果改成5,則執行的結果如下圖所示:
2、 Doctest
doctest 模組會搜尋那些看起來像互動式會話的 Python 程式碼片段,然後嘗試執行並驗證結果.即使從沒接觸過 doctest,我們也可以從這個名字中窺到一絲端倪。“它看起來就像程式碼裡的文件字串(docstring)一樣” 如果你這麼想的話,就已經對了一半了。
舉個例子:
def square(x):
"""Squares x.
>>> square(2)
4
>>> square(-2)
4
>>> square(5)
25
"""
return x * x
if __name__ == '__main__':
import doctest
doctest.testmod()
當執行該程式碼後,會執行文件內>>> 後面的測試程式碼,並與下一行的結果進行比對。執行的結果如下:
但是,如果我們把結果改一下,square(2)的結果改成5,測試程式碼如下:
def square(x):
"""Squares x.
>>> square(2)
5
>>> square(-2)
4
>>> square(5)
25
"""
return x * x
if __name__ == '__main__':
import doctest
doctest.testmod()
執行的測試結果如下所示:
3、py.test
pytest是python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。根據pytest的官方網站介紹,它具有如下特點:
①非常容易上手,入門簡單,文件豐富,文件中有很多例項可以參考
②能夠支援簡單的單元測試和複雜的功能測試
③支援引數化
④執行測試過程中可以將某些測試跳過,或者對某些預期失敗的case標記成失敗
⑤支援重複執行失敗的case
⑥支援執行由nose, unittest編寫的測試case
⑦具有很多第三方外掛,並且可以自定義擴充套件
⑧方便的和持續整合工具整合
編寫pytest測試樣例
編寫pytest測試樣例非常簡單,只需要按照下面的規則(和nose類似):
測試檔案以test_開頭(以_test結尾也可以)
測試類以Test開頭,並且不能帶有 init 方法
測試函式以test_開頭
斷言使用基本的assert即可
example.py
setup_class/teardown_class 在當前測試類的開始與結束執行。
setup/treadown 在每個測試方法開始與結束執行。
setup_method/teardown_method 在每個測試方法開始與結束執行,與setup/treadown級別相同。
執行pytest測試樣例
執行測試樣例的方法很多種,上面第一個例項是直接執行py.test,第二個例項是傳遞了測試檔案給py.test。其實py.test有好多種方法執行測試:
4、Nose
Nose是對unittest的擴充套件,使得python的測試更加簡單。nose自動發現測試程式碼並執行,nose提供了大量的外掛,比如測試輸出的xUnitcompatible,覆蓋報表等等。
nose的詳細文件: ofollow,noindex" target="_blank"> https:// nose.readthedocs.org/en /latest/
nose不是python自帶模組,需要用pip安裝
nose相關執行命令:
1、 nosetests –h檢視所有nose相關命令
2、 nosetests –s執行並捕獲輸出
3、 nosetests –with-xunit輸出xml結果報告
4、 nosetests -v: 檢視nose的執行資訊和除錯資訊
5、 nosetests -w 目錄:指定一個目錄執行測試
nose 特點:
a) 自動發現測試用例(包含[Tt]est檔案以及檔案包中包含test的函式)
b) 以test開頭的檔案
c) 以test開頭的函式或方法
d) 以Test開頭的類
經過研究發現,nose會自動識別[Tt]est的類、函式、檔案或目錄,以及TestCase的子類,匹配成功的包、任何python的原始檔都會被當做測試用例。
5、tox
最大的特色,是自動最測試環境的管理以及使用多個解析器配置進行測試。
tox的詳細文件: http:// testrun.org/tox/latest/
6、Unittest2
是unitest的升級版。對API進行了改善以及更好的診斷語法。
unittest2的詳細文件: https:// pypi.python.org/pypi/un ittest2
首先,安裝
pip install unittest2
為了以後能在unittest與unittest2之間進行切換,最好的程式碼編寫方式如下:
import unittest2 as unittest
class MyTest(unittest.TestCase):
...
7、mock unittest.
mock是用來測試python的庫。在python3.3版本以後,這個是一個標準庫。對老版本來說,使用pip install mock進行安裝。
mock的精髓在於,你可以使用模擬的物件來替代你的系統的一部分,然後驗證後續的執行是否正確。
mock的詳細文件: http://www. voidspace.org.uk/python /mock/
總結:
我這篇文章,主要是講基於 python 語言的自動化測試框架的一些設計思想和基本使用示例。其實工具的使用方法很簡單,但是如何利用好這些工具來進行軟體生產,則需要其它的計算機技能了。
“軟體的自動化測試是有成本的,而且成本不低,基本上相當於在原有的功能開發工程 的基礎上再建立一個平行的 測試開發工程 ”。
也就是說,如果你對自動化測試有你的期望值,那麼就肯定是要付出相應的代價和精力的。好的東西也是需要優秀的人花大量的時間去完成的。在正式進入到自動化測試的領域之前,先要建立這樣的價值觀才能在軟體測試這條路上走的更遠。
歡迎加入 51軟體測試大家庭,在這裡你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟體測試技術乾貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ 群: 755431660