全功能Python測試框架 pytest

2021-09-24 02:45:13 字數 3380 閱讀 6946

python通用測試框架大多數人用的是unittest+htmltestrunner,這段時間看到了pytest文件,發現這個框架和豐富的plugins很好用,所以來學習下pytest.

pytest是乙個非常成熟的全功能的python測試框架,主要有以下幾個特點:

安裝pytest:

pip install -u pytest
驗證安裝的版本:

pytest --version
幾個pytest documentation中的例子:例子1:

import pytest

# content of test_sample.py

def func(x):

return x + 1

def test_answer():

assert func(3) == 5

命令列切換到檔案所在目錄,執行測試(也可以直接在ide中執行):

這個測試返回乙個失敗報告,因為func(3)不返回5。

例子2:

當需要編寫多個測試樣例的時候,我們可以將其放到乙個測試類當中,如:

class testclass:  

def test_one(self):

x = "this"

assert 'h' in x

def test_two(self):

x = "hello"

assert hasattr(x, 'check')

執行以上例子:

從測試結果中可以看到,該測試共執行了兩個測試樣例,乙個失敗乙個成功。同樣,我們也看到失敗樣例的詳細資訊,和執行過程中的中間結果。-q即-quiet,作用是減少冗長,具體就是不再展示pytest的版本資訊。

如何編寫pytest測試樣例

通過上面2個例項,我們發現編寫pytest測試樣例非常簡單,只需要按照下面的規則:

pytest的多種執行模式,讓測試和除錯變得更加得心應手,下面介紹5種常用的模式。在介紹之前需要提醒一句,執行pytest時會找當前目錄及其子目錄中的所有test_*.py 或 *_test.py格式的檔案以及以test開頭的方法或者class,不然就會提示找不到可以執行的case了。

1.執行後生成測試報告(htmlreport)

安裝pytest-html:

pip install -u pytest-html
執行模式:

pytest --html=report.html
報告效果:

在以上報告中可以清晰的看到測試結果和錯誤原因,定位問題很容易。

2.執行指定的case

當我們寫了較多的cases時,如果每次都要全部執行一遍,無疑是很浪費時間的,通過指定case來執行就很方便了。

例子**:

class testclassone(object):

def test_one(self):

x = "this"

assert 't'in x

def test_two(self):

x = "hello"

assert hasattr(x, 'check')

class testclasstwo(object):

def test_one(self):

x = "iphone"

assert 'p'in x

def test_two(self):

assert hasattr(x, 'check')

執行模式:

模式1:直接執行test_se.py檔案中的所有cases:

pytest test_se.py
模式2:執行test_se.py檔案中的testclassone這個class下的兩個cases:

pytest test_se.py::testclassone
模式3:執行test_se.py檔案中的testclasstwo這個class下的test_one:

pytest test_se.py::testclasstwo::test_one
注意:定義class時,需要以t開頭,不然pytest是不會去執行該class的。

3.多程序執行cases

當cases量很多時,執行時間也會變的很長,如果想縮短指令碼執行的時長,就可以用多程序來執行。

安裝pytest-xdist:

pip install -u pytest-xdist
執行模式:

pytest test_se.py -n num
其中num填寫併發的程序數。

4.重試執行cases

在做介面測試時,有事會遇到503或短時的網路波動,導致case執行失敗,而這並非是我們期望的結果,此時可以就可以通過重試執行cases的方式來解決。

安裝pytest-rerunfailures:

pip install -u pytest-rerunfailures
執行模式:

pytest test_se.py --reruns num
num填寫重試的次數。

5.顯示print內容

在執行測試指令碼時,為了除錯或列印一些內容,我們會在**中加一些print內容,但是在執行pytest時,這些內容不會顯示出來。如果帶上-s,就可以顯示了。

執行模式:

pytest test_se.py -s
另外,pytest的多種執行模式是可以疊加執行的,比如說,你想同時執行4個程序,又想列印出print的內容。可以用:

pytest test_se.py -s -n 4

python功能測試 python測試框架

一 測試常用規則 乙個測試單元必須關注乙個很小的功能函式,證明它是正確的 在編寫 前執行完整的測試,而且在編寫 後再重新執行一次。這樣能保證你後來編寫的 不會破壞任何事情 在提交 前執行完整的測試 單元測試函式使用長的而且具有描述性的名字。在正式執行 中,可能使用square 或sqr 取名,但是在...

功能測試框架

問題 1 無法系統化表達出自己設計用例和設計測試 方案的方法 沒有想清楚,沒有形成自己的思維 套路2 面試的時候 1 你是怎麼設計測試用例或者設計乙個測試方案 2 出一道題,讓你來設計他的測試用例。谷歌 1 你如何測試乙個pc 客戶端產品 2 如何測試gmail的撤回功能 3 如何確保乙個多執行緒的...

Python中的Tab補全功能新增

用 python shell 沒有 tab 補全還是挺痛苦的,下面就記錄一下如何補全 1.先準備乙個 tab.py 的指令碼。tap.py 1 usr bin python2 python tab file34 import sys5 import readline 6import rlcomple...