머리말
DDT : 데이터 구동은 간단한 포인트는 작은 지점 때 로그인 입력 정상, 비정상 데이터 로그와 같은 테스트 데이터의 다수의 세트 인 것을 특징으로하는 방법.
실제 프로젝트, 아주 작은을 가진 자동화 된 테스트는,뿐만 아니라 테스트 데이터는 엑셀 유지하는 데 사용되었다
A, DDT
1, 설치 : 핍 (여기서 나는을 설치 한) DDT 설치
C : \ 사용자 \ 관리자> 핍 DDT 설치 이미 충족 요구 사항 : DDT 에서 D를 : \ path_python \ lib 디렉토리 \ 사이트 - 패키지 ( 1.2 . 1 )
2, 선 우리의 이전의 정상적인 로그인 대량 참여 봐. 지금 필요한 계좌 번호와 비밀번호, 데이터의 한 세트 로그인, DDT는 데이터 실행의 여러 세트를 할 수 있습니다. (여기에 자신이 오게)
# 로그인 S = requests.session () LOGIN_URL = ' http://127.0.0.1/zentao/user-login.html ' PR = { ' 계정 ' : ' ADMIN ' , ' 비밀번호 ' : ' 123456 ' , } login_r = s.post (LOGIN_URL, PARAMS = PR) # 통과 PARAMS 매개 변수 #은 로그인 성공 여부를 말할 R1 = S. GET ( ' http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc가. HTML ' ) IF ' 제품 중앙 도서관 ' 에서 r1.content.decode ( ' UTF-8 ' ) : 인쇄 ( ' 로그인 성공 ' ) 다른 : 인쇄 ( ' 로그인 실패 ' )
3, 유닛 테스트 DDT 소개합니다.
① 우선 데이터 세트의 여러 소스를 가지고 (나는, 당신은 또한 같은 같은 파일을 읽을 수있는 데이터 JSON 자신의 정의의 세트를 썼다!)
② 테스트 클래스, 우리는 장식을 추가해야합니다 : @ ddt.ddt
③ 테스트 기능, 또한 장식을 추가하고, 전체 데이터 전송을 통해 모든 데이터를 전송해야 * 각각 @ ddt.data (* test_data)
④ 참고 : DDT 패스에서 사용되는 데이터 세트의 데이터 대신 test_data보다 아니지만 * test_data
가져 오기 요청, DDT, 유닛 테스트 데이터 드라이버 준비하는 데이터 #의 DDT 필요 TEST_DATA을 = [ { ' 계정 ' : ' ADMIN ' , ' PWD ' : ' 123465 ' , ' 특급 ' : ' ADMIN ' }, { ' 계정 ' : ' gsxl은 ' , ' PWD ' : ' 123321 ' , ' 특급 ' :'gsxl ' }, { ' 계정 ' : ' XXXX ' , ' PWD ' : ' 654321 ' , ' 특급 ' : ' XXXX ' }] #类需要DDT装饰器 @ ddt.ddt 클래스 Test_xl (unittest.TestCase) : DEF 설정 (자동) : self.s = requests.session () self.s.verify = 거짓 데프 형 분석 (자기) : self.s.close () @ ddt.data ( *test_data) # 사용 사례는 테스트 데이터 DDT 사용합니다 : DEF의 test_001 (자체, 데이터) (인쇄 ' DDT 테스트 데이터 : % S ' % 데이터) 경우 __name__ == ' __main__ ' : unittest.main () #은 말했다 내 인터프리터는 유닛 테스트에 의해 실행됩니다 !
네, 어떻게 당신이 원하는 해당 값을 얻으려면? 그것은 그렇지 않으면 첫 번째로 변경된 기본 데이터 삭제 수표의 새로운 구조를 배울를 얻을 수 그것은 DICT,리스트의 반환 같아요. 간단한 추출은 다음과 같습니다 :
import requests, ddt, unittest # ddt数据驱动所需准备的数据 test_data = [ {'account': 'admin', 'pwd': '123465', 'exp': 'admin'}, {'account': 'gsxl', 'pwd': '123321', 'exp': 'gsxl'},] # 类需要ddt装饰器 @ddt.ddt class Test_xl(unittest.TestCase): def setUp(self): self.s = requests.session() self.s.verify = False def tearDown(self): self.s.close() @ddt.data(*test_data) # 某个用例需要用到ddt的测试数据 def test_001(self, data): # print('ddt测试数据是:%s' % data) user = data['account'] pwd = data['pwd'] exp = data['exp'] print('这是账号:', user) print('这是密码:', pwd) print('这是期望结果:', exp) if __name__ == '__main__': unittest.main() # 告诉解释器我是用unittest运行的!!!