初識pytest自動化測試框架
前言
pytest是一款強大的python自動化測試工具,可以勝任各種型別或者級別的軟體測試工作。pytest提供了豐富的功能,包括assert重寫,第三方外掛,以及其他測試工具無法比擬的fixture模型。pytest是一個軟體測試框架,是一款命令列工具,可以自動找到測試用例執行,並且回報測試結果。有豐富的基礎庫,可以大幅度提高使用者編寫測試用例的效率。具備擴充套件性,使用者可以自己編寫外掛,或者安裝第三方提供的外掛。可以很容易地與其他工具整合到一起使用。比如持續整合,web自動化測試等。
下面列舉了一些pytest相對於其他框架的有點
1. 簡單的測試可以很簡單的編寫
2. 複雜的測試也可以簡單的編寫
3. 測試的可讀性
4.易於上手
5. 斷言僅使用原生的assert關鍵字,而不是像unittest那樣使用self.assert**那樣
6. pytest可以執行unittest和nose編寫的測試用例
上面大部分結論其實也不是我個人總結的,是我從一本書上看到的,因為我也是剛剛接觸這個框架,瞭解的也並不多。還有一個重要原因就是寫文章不寫點所謂的科學理論好像缺少點啥……(別管了前面了*總之一句話:pytest就是一個測試框架和unittest一類,功能很強,支援好多外掛,用例寫起來簡單,程式碼邏輯性強,值得學習!實際工作中能不能用,能不能用好那就要靠自己了!)^_^廢話不多說!
編寫第一個測試函式(用例)
1 from selenium import webdriver 2 3 def testOpenUrl(): 4try: 5driver = webdriver.Firefox() # 開啟瀏覽器 6driver.get('http://www.baidu.com') # 訪問百度 7title = driver.title # 獲取百度首頁的title 8 9assert title == '百度一下,你就知道' # 斷言 10except AssertionError: 11raise AssertionError('斷言失敗!') 12driver.quit()
可以看到用例很簡單,就是一個普通的函式(驅動瀏覽器,開啟百度首頁,斷言首頁的title是否正確),那麼pytest是如何執行測試用例的呢?
我們可以通過cmd終端,並且換到當前用例所在的目錄,輸入 pytest 即可,執行結果如下所示
pytest執行用例命令列引數
上面我們已經學會了執行用例的命令 就是pytest, 那麼真的就這麼簡單了嗎?其實不然,pytest 還提供了很多可供我們執行用例的命令列引數,下面我們就一一介紹並演示
1.-v:pytest -v 說明:可以輸出用例更加詳細的執行資訊,比如用例所在的檔案及用例名稱等
2.-s:pytest -s 說明:輸入我們用例中的調式資訊,比如print的列印資訊等,我們在上面用例8行加上一句 print(driver.title),我們再執行一下我們的用例看看
3.-m:pytest -m ”標記“ 說明:執行特定的測試用例。我們再次修改一下我們的用例,並新增一個新的用例
1 from selenium import webdriver 2 import pytest 3 4 @pytest.mark.run_this_testcase 5 def testOpenUrl(): 6try: 7driver = webdriver.Firefox() # 開啟瀏覽器 8driver.get('http://www.baidu.com') # 訪問百度 9title = driver.title # 獲取百度首頁的title 10print(driver.title) 11assert title == '百度一下,你就知道' # 斷言 12except AssertionError: 13raise AssertionError('斷言失敗!') 14driver.quit() 15 16 def testBaidu(): 17driver = webdriver.Firefox()# 開啟瀏覽器 18driver.get('http://www.baidu.com')# 訪問百度 19title = driver.title# 獲取百度首頁的title 20assert title == '百度一下,你就知道'# 斷言
我們可以看到只執行了被標記的用例,新新增的用例並沒有被執行
4.-k:pytest -k "關鍵字" 說明:執行用例包含“關鍵字”的用例
5.-q:pytest -q 說明:簡化控制檯的輸出,可以看出輸出資訊和上面的結果都不一樣, 下圖中有兩個..點代替了pass結果
以上5個引數,大家可以自己嘗試一下,下一篇文章會繼續講解其他幾個常用的引數的使用以及pytest是如何發現測試用例的!