DDT 테스트 데이터 드라이버 Python3 - 유닛 테스트 프레임 워크

프레임 워크 유닛 테스트 DDT 테스트 데이터 드라이버

DDT의 사용

DDT의 데이터 중심

  • DDT : 데이터 드라이버 테스트 (데이터 기반 테스트)
  • 데이터 드라이버는 생각했다, 테스트 케이스를 생성하는 외부 데이터를 데이터와 사용 사례를 분리

설치

pip install ddt

DDT 수정 된 소스 (각각 실시 예는 리포트 생성기의 타이틀에 대응하는 타이틀을 표시한다)

  1. DDT의 DDT 파일 () 메소드
  2. 원래 test_data_docstring는 = _get_test_data_docstring (FUNC는 V) 댓글
  3. 데이터 인 경우 피사체가 저장된에 추가 test_data_docstring = v.title
  4. 데이터가 사용하는 경우 사전 을 저장하는, 단지 추가 test_data_docstring = V [ "제목"]
  5. 시험 보고서 이후에 생성하면 수정할 수 있습니다 제목 테스트 보고서에 표시 열을
  6. 참고 : 열 이름 제목 엑셀 테이블의 경우
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, 테스트 케이스 클래스를 생성

읽기 엑셀 스프레드 시트 ReadExcel

@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="用例通过")
직접 테스트 케이스 클래스를 실행할 수, 자동화 된 테스트 결과에 엑셀에 기록됩니다

추천

출처www.cnblogs.com/desireyang/p/12091154.html