Python+unittest+DDT 데이터 구동 테스트 실현
데이터 구동 테스트:
반복 코드 작성 피하 기데이터 와 테스트 스 크 립 트 분리
4.567917.데이터 구동 테스트 를 통 해 여러 그룹의 데이터 테스트 장면 을 검증 합 니 다.4.567918.
4.567917.일반적으로 유닛 테스트 와 인터페이스 테스트 에 많이 사용 된다.
ddt 소개
Data-Driven Tests(DDT)는 데이터 구동 테스트 로 서로 다른 데이터 가 같은 테스트 사례 를 실행 할 수 있 습 니 다.ddt 의 본질은 바로 장식 기 이 고 한 조 의 데이터 한 장면 이다.
ddt 모듈 은 하나의 종류의 장식 기 ddt 와 세 가지 방법의 장식 기 를 포함 합 니 다.
data:테스트 용례 에 전달 하고 자 하 는 여러 개의 인 자 를 포함 합 니 다.목록,모듈,사전 등 을 포함 할 수 있 습 니 다.
file_data:json 이나 Yml 에서 데 이 터 를 불 러 옵 니 다.
unpack:다음 예제 와 같이 요 소 를 분할 합 니 다.
@data([a,d],[c,d])
@unpack 이 없 으 면[a,b]매개 변수 전송 사례 로 실 행 됩 니 다.
@unpack 이 있 으 면[a,b]가 분해 되 어 용례 중의 두 매개 변수 에 따라 전 달 됩 니 다.
설치 하 다.
pip install ddt
data 장식 기 사용 하기
전체 목록,사전,모듈 전달
import unittest
from ddt import ddt,data,unpack
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
# @data([1,2,3,4,5,6,7])
@data({"a":"1","b":2})
# @data((1,2,3))
def test(self,data):
print(data)
if __name__ == '__main__':
unittest.main(verbosity=2)
포 함 된 목록,모듈,사전 의 전체 전달 방식
import unittest
from ddt import ddt,data,unpack
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
# @data(*[[1,2,3],[1,0,1],[0,0,0],[1,1,3]])
# @data(*[{"a":1}, {"a":2}, {"a":3}, {"a":4}])
@data(*[(1,5), (4,2), (6,7), (5,6)])
def test(self,data):
print(data)
if __name__ == '__main__':
unittest.main(verbosity=2)
unpack 장식 기 사용 하기unpack 순차 전달 모듈
import unittest
from ddt import ddt,data,unpack
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
@data((1,2,3),(1,0,1),(0,0,0),(1,1,3))
@unpack
def test(self,a,b,c):
print(a,b,c)
if a+b == c:
print(True)
else:
print(False)
if __name__ == '__main__':
unittest.main(verbosity=2)
출력 결과:1 2 3
True
1 0 1
True
0 0 0
True
1 1 3
False
순차 전달 사전
import unittest
from ddt import ddt,data,unpack
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
@data({"a":1,"b":1,"c":2},
{"a":0,"b":0,"c":0},
{"a":-1,"b":1,"c":0})
@unpack
def test(self,a,b,c):
print(a,b,c)
if a + b == c:
print(True)
else:
print(False)
if __name__ == '__main__':
unittest.main(verbosity=2)
출력 결과:1 1 2
True
0 0 0
True
-1 1 0
True
순차 전달 목록
import unittest
from ddt import ddt,data,unpack
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
@data([1,2,3],[1,0,1],[0,0,0],[1,1,3])
@unpack
def test(self,a,b,c):
print(a,b,c)
if a + b == c:
print(True)
else:
print(False)
if __name__ == '__main__':
unittest.main(verbosity=2)
출력 결과:1 2 3
True
1 0 1
True
0 0 0
True
1 1 3
False
file 사용데이터 장식 기
ddt 는 파일 에서 데 이 터 를 불 러 오 는 것 을 지원 합 니 다.@filedata()장식 기 는 json 이나 Yml 에서 데 이 터 를 불 러 옵 니 다.".yml"과".yaml"로 끝 나 는 파일 만 Yaml 파일 로 불 러 옵 니 다.모든 다른 형식 파일 은 txt 와 같은 json 파일 로 불 러 옵 니 다.
제 이 슨 데이터 전달
test.json 파일
{
"case1": {
"a": 1,
"b": 1,
"c": 2
},
"case2": {
"a": -1,
"b": 1,
"c": 0
},
"case3": {
"a": 0,
"b": 0,
"c": 0
}
}
import unittest
from ddt import ddt,file_data
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
@file_data("test.json")
def test(self, a, b, c):
print(a,b,c)
if __name__ == '__main__':
unittest.main(verbosity=2)
다 중 json 파일 전달test.json 파일
{
"case1": {
"data": {
"a": 1,
"b": 1
},
"result": 2
},
"case2": {
"data": {
"a": 0,
"b": 1
},
"result": 1
},
"case3": {
"data": {
"a": 0,
"b": 0
},
"result": 0
}
}
import unittest
from ddt import ddt,file_data
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
@file_data("test.json")
def test(self,data,result):
print(data,result)
if __name__ == '__main__':
unittest.main(verbosity=2)
yml 데이터 전달yml 설치 필요 yml(pip install PyYAML)
test.yml
def add(a,b):
return a+b
@ddt
class MyTest(unittest.TestCase):
@file_data("test.yml")
def test(self,a,b,c):
print(a,b,c)
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.