pytest fixture功能學習

2021-10-03 18:22:20 字數 3420 閱讀 1265

目錄

一、使用pytest.fixture入參測試**

二、 使用pytest.fixture入參,資料分離

三、使用pytest.mark.parametrize 入參測試**

被測試**:is_leap_year.py

def is_leap_year(year):

# 先判斷year是不是整型

if isinstance(year, int) is not true:

raise typeerror("傳入的引數不是整數")

elif year == 0:

raise valueerror("公元元年是從公元一年開始!!")

elif abs(year) != year:

raise valueerror("傳入的引數不是正整數")

elif (year % 4 ==0 and year % 100 != 0) or year % 400 == 0:

print("%d年是閏年" % year)

return true

else:

print("%d年不是閏年" % year)

return false

import sys

import is_leap_year

import pytest

class testpara():

# 準備測試資料

is_leap = [4, 40, 400, 800, 1996, 2996]

is_not_leap = [1, 100, 500, 1000, 1999, 3000]

is_valueerror = [0, -4, -100, -400, -1996, -2000]

is_typeerror = ['-4', '4', '100', 'ins', '**', '中文']

# params中需要傳入list

@pytest.fixture(params=is_leap)

def is_leap_y(self,request):

print("***x",request.param)

return request.param

@pytest.fixture(params=is_typeerror)

def is_type_error(self,request):

return request.param

def test_is_leap(self, is_leap_y):

assert is_leap_year.is_leap_year(is_leap_y) == true

def test_is_typeerror(self, is_type_error):

with pytest.raises(typeerror):

is_leap_year.is_leap_year(is_type_error)

1.資料模組conftest.py(通過conftest.py 共享fixture,pytest裡面預設讀取conftest.py裡面的配置,此檔名不可隨意取)

import pytest

# 準備測試資料

is_leap = [4, 40, 400, 800, 1996, 2996]

is_not_leap = [1, 100, 500, 1000, 1999, 3000]

is_valueerror = [0, -4, -100, -400, -1996, -2000]

is_typeerror = ['-4', '4', '100', 'ins', '**', '中文']

# params中需要傳入list

@pytest.fixture(params=is_leap)

def is_leap_y(request):

return request.param

@pytest.fixture(params=is_typeerror)

def is_type_error(request):

return request.param #使用request.param接受用例引數化的資料

2.測試**test_con.py

import sys

import is_leap_year

import pytest

class testpara():

def test_is_leap(self, is_leap_y):

assert is_leap_year.is_leap_year(is_leap_y) == true

def test_is_typeerror(self, is_type_error):

with pytest.raises(typeerror):

is_leap_year.is_leap_year(is_type_error)

import sys

import is_leap_year

import pytest

class testpara():

# 引數傳入year中

@pytest.mark.parametrize('year, expected',

[(1, false),

(4, true),

(100, false),

(400, true),

(500, true)])

def test_is_leap(self, year, expected):

assert is_leap_year.is_leap_year(year) == expected

@pytest.mark.parametrize('year, expected',

[(0, valueerror),

('-4', typeerror),

(-4, valueerror),

('ss', typeerror),

(-100, valueerror)])

def test_is_typeerror(self, year, expected):

if expected == valueerror:

with pytest.raises(valueerror) as excinfo:

is_leap_year.is_leap_year(year)

assert excinfo.type == expected

else:

with pytest.raises(typeerror) as excinfo:

is_leap_year.is_leap_year(year)

assert excinfo.type == expected

pytest fixture簡單使用

fixture屬於pytest中的乙個方法,fixture是在測試函式執行前後進行執行的,fixture的命名不規範沒有強制要求,以及裡面的 內容可以自己進行定製從而滿足多種測試需求,配置測試前的資料清理,以及測試完成後的資料管理。fixture中的 處理測試後的 為 yield 測試開始前會執行y...

ORACLE功能GREATEST功能說明具體例項

1語法 greatest expr 1,expr 2,expr n 2說明greatest expr 1,expr 2,expr n 函式從表示式 列 常量 計算值 expr 1,expr 2,expr n 等中找出最大的數返回。在比較時。oracie 會自己主動按表示式的資料型別進行比較,以 ex...

CUDA功能和通用功能

cuda功能和通用功能 本文描述了類似於cuda ufunc的物件。為了支援cuda程式的程式設計模式,cuda vectorize和guvectorize無法產生常規的ufunc。而是返回類似ufunc的物件。該物件是乙個近似的物件,但與常規的numpy ufunc不完全相容。cuda ufunc...