目錄
一、使用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...