프레임 워크 유닛 테스트 DDT 테스트 데이터 드라이버
DDT의 사용
DDT의 데이터 중심
- DDT : 데이터 드라이버 테스트 (데이터 기반 테스트)
- 데이터 드라이버는 생각했다, 테스트 케이스를 생성하는 외부 데이터를 데이터와 사용 사례를 분리
설치
pip install ddt
DDT 수정 된 소스 (각각 실시 예는 리포트 생성기의 타이틀에 대응하는 타이틀을 표시한다)
- DDT의 DDT 파일 () 메소드
- 원래 test_data_docstring는 = _get_test_data_docstring (FUNC는 V) 댓글
- 데이터 인 경우 피사체가 저장된에 추가 test_data_docstring = v.title
- 데이터가 사용하는 경우 사전 을 저장하는, 단지 추가 test_data_docstring = V [ "제목"]
- 시험 보고서 이후에 생성하면 수정할 수 있습니다 제목 테스트 보고서에 표시 열을
- 참고 : 열 이름 제목 엑셀 테이블의 경우
def ddt(cls):
for name, func in list(cls.__dict__.items()):
if hasattr(func, DATA_ATTR):
for i, v in enumerate(getattr(func, DATA_ATTR)):
test_name = mk_test_name(name, getattr(v, "__name__", v), i)
# test_data_docstring = _get_test_data_docstring(func, v) # 原来的
# test_data_docstring = v.title # 数据使用对象来保存,改成这样
test_data_docstring = v["title"] # 数据使用字典来保存,改成这样
if hasattr(func, UNPACK_ATTR):...
else:
add_test(cls, test_name, test_data_docstring, func, v)
delattr(cls, name)
elif hasattr(func, FILE_ATTR):...
return cls
(테스트 클래스는 하나의 시험 방법을 사용할 수있다,이 경우 필요) 데이터 드라이버 DDT 테스트 클래스에서 취득 된 데이터를 사용하여
먼저 간단한 로그인 기능 기능을 준비
def login(name=None, pwd=None):
if name and pwd:
if name == "desire" and pwd == "123456":
return {"code": 0, "msg": "登陆成功"}
else:
return {"code": 1, "msg": "账号密码错误"}
else:
return {"code": 1001, "msg": "不能有空值"}
테이블 테스트를 엑셀 준비
가져 오기 모듈 DDT
from ddt import ddt, data
플러스 DDT 장식 @ddt, 테스트 케이스 클래스를 생성
@ddt
class LoginTestCase(unittest.TestCase):
# DATA_DIR:测试用例存放的路径,用os模块进行拼接excel用例表格的路径
excel_path = os.path.join(DATA_DIR, 'cases.xlsx')
login = ReadExcel(excel_path, "login")
# 读取数据(字典形式)
login_datas = login.read_data_dict()
# 读取数据(类的形式)
# login_datas = login.read_data_obj()
DDT 장식 @data과 함께, 테스트 케이스의 방법을 만들기
@Data 파라미터 ()는 매개 변수를 각 경우에 풀고있어서 내부의 데이터를 전달
@data(*login_datas)
def test_login(self, case):
pass
단계 1 : 제조 예 데이터
① : 사전 값 (사전을 사용하여 소스 파일을 수정해야 DDT)
# 1.参数
login_data = eval(case["data"])
# 2.预期结果
expected = eval(case["expected"])
# 3.用例序号
case_id = case["case_id"]
② : 값 유형의 형태 (클래스 양식을 사용하여 소스 파일을 수정해야 DDT)
# 1.参数
login_data = eval(case.data)
# 2.预期结果
expected = eval(case.expected)
# 3.用例序号
case_id = case.case_id
두 번째 단계는 성능 함수의 구현은 실제 결과를 얻을
result = login(*login_data)
세 번째 단계 : 예상 및 실제 결과와 비교 주장
try:
self.assertEqual(expected, result)
except AssertionError as a:
# 把用例未通过结果写入excel中(调用[ReadExcel](https://www.cnblogs.com/desireyang/p/12059916.html)类中的写入方法)
self.login.write_data(row=case_id + 1, column=5, value="用例未通过")
raise a
else:
self.login.write_data(row=case_id + 1, column=5, value="用例通过")
직접 테스트 케이스 클래스를 실행할 수, 자동화 된 테스트 결과에 엑셀에 기록됩니다