파이썬 및 셀레늄 테스트 데이터 드라이버 유닛 테스트 DDT + + XML []

I. 개요

이 블로그는, DDT 모듈, 파이썬과 셀레늄 프레임 워크 유닛 테스트를 기반으로, 자동화 된 테스트를하고 소개하는 테스트로 XML 입력 파일을 사용합니다.

둘째, XML 파일

D : \\ 프로그램 \\ 파이썬 \\ PythonUnittest \\ TestData 사용 \\ TestData.xml 경로를 저장

파일 이름 : TestData.xml

<? XML 버전 = "1.0"인코딩 = "UTF-8"?> 
<bookList 타입 = "기술"> 
    <책> 
        <이름> 셀레늄 XML datadriven </ 이름> 
        <저작> davieyang </ 작성자> 
    </ 책> 
    <책> 
        <이름> 셀레늄 엑셀 datadriven </ 이름> 
        <작가> davieyang </ 저자> 
    </ 책> 
    <책> 
        <이름> 셀레늄 DDT 데이터 목록 </ 이름> 
        <작가> davieyang </ 저자> 
    </ 책 > 
</ bookList>

  

셋째, 구문 분석 XML 파일

파일 경로 : 백분율 \ ParseXMLUtil

파일 이름 : ParseXMLUtil 

. 인코딩 = UTF 8 # 
"" " 
__title__ = '' 
__author__ = 'davieyang' 
__mtime__ = '2018년 4월 21일' 
" "" 
ElementTree xml.etree 가져 오기에서 


클래스 parseXML (객체) 
    는 def __init의 __ (자체, XMLPath) : 
        = XMLPath self.xmlPath 

    DEF getRoot (자동) : 
        # 개방형 XML 파일을 구문 분석하는 
        나무 = ElementTree.parse (self.xmlPath) 
        다음 # XML 파일의 루트 객체를 얻고,이 호출자에게 반환 
        ) (tree.getroot에 대한 바로 가기를 반환 

    DEF findNodeByName을 (자기가 인 parentNode 노드 이름은) : 
        # 노드 객체에 의해 노드의 이름을 얻을 
        노드 = parentNode.findall는 (여기서 nodeName)을 
        반환 노드 

    DEF getNodeofChildText (자체, 노드는)
        # 노드 키 값 사전 개체로 존재하는 노드의 조성 노드하에있는 모든 자식 노드들에 대한 노드의 이름을 취득 
        책 책 :
        = {i.tag childrenTextDict의리스트에 대한 I i.text (node.iter ()) [1.]} 
        # 위의 코드에 해당 
        '' 
        childrenTextDict = {} 
        I에 대한 목록 (node.iter ()) [1] : 
            fhildrenTextDict [i.tag] = i.text가 
        '' ' 
        돌아 childrenTextDict 

    DEF getDataFromXml (자동) : 
        #은 XML 문서의 루트 노드 객체를 얻을 
        루트 = self.getRoot () 
        # 모든이라는 책의 루트에 도착 노드 객체 
        책 = self.findNodeByName (루트, "책") 
        데이터 목록 = [] 
        # 모든 책 노드 객체 얻을 횡단 
        # 필요한 테스트 데이터를 달성 
            dataList.append (childrenText)
            childrenText = self.getNodeofChildText (책) 
        데이터 목록을 반환 


하는 경우 __name__ == "__main__": 
    XML = ParseXML (R "F : \ seleniumWithPython \ TestData 사용 \ TestData.xml") 
    datas = xml.getDataFromXml () 
    datas의 난에 대한 : 
        인쇄 ( I [ "이름", I [ "저자"])

  

넷째, 테스트 스크립트

파일의 이름은 할 수 있습니다 data_driven_by_xml.py

인코딩 = UTF. 8 # 
"" " 
__title__ = '' 
__author__ = 'davieyang' 
__mtime__ = '2018년 4월 21일' 
" "" 
webdriver 셀레늄 가져 오기에서 
가져 오기 유닛 테스트 
가져 오기 시간 
가져 오기 로깅 
가져 오기 역 추적 
가져 오기 DDT 
Util.ParseXMLUtil 가져 오기 parseXML에서 
가져 오기는 NoSuchElementException의 selenium.common.exceptions 


# 초기화 로그 오브젝트 
logging.basicConfig ( 
    # 로그 레벨 
    레벨 = logging.info, 
    # 타임 코드 여기서 파일 이름, 라인 번호, 로그 레벨 로그 정보의 이름 
    형식 = '% (asctime과) S % (파일명) S [라인 % (LINENO) D] % (levelname)의 % (메시지)의 ' 
    타임 # 인쇄 로그 
    datefmt ='% A, %의 D %의 B %의 Y의 %의 H %의 M : %의 S '
    # 로그 파일은 디렉토리에 저장하고 파일 이름을 기록하고 있습니다
    파일 이름 = 'D : \\ 프로그램 \\ 파이썬 \\ PythonUnittest \\ 보고서 \\ TestResults.TestResults', 
    #打开日志的方式
    파일 모드 = 'w' 
) 

# currentPath = os.path.dirname (os.path.abspath ( __file__)) 
# dataFilePath = os.path.join (currentPath "TestData.xml") 
dataFilePath = "E : \\数据驱动\\ TestData.xml" 
인쇄 (dataFilePath) 

#创建ParseXML类实例对象
XML = ParseXML (dataFilePath ) 


@ ddt.ddt 
클래스 DataDrivenTestByXML (unittest.TestCase) : 

    데프 설정 (자동) : 
        self.driver = webdriver.Chrome (executable_path = R "F : \ 자동화 \ webdriver \ chromedriver.exe") 

    @ ddt.data (* XML .getDataFromXml ()) 
    데프 test_dataDrivenByXML (자기, 데이터) :
        testdata로, expectData 데이터가 = [ "이름", 데이터 [ "저자"] 
        URL = "http://www.baidu.com" 
        self.driver.get (URL) 
        self.driver.maximize_window () 
        self.driver.implicitly_wait (10) 

        시도 : 
            self.driver.find_element_by_id ( "kw")를 send_keys (testdata로). 
            self.driver.find_element_by_id ( "SU")를 ()을 클릭합니다. 
            time.sleep (3) 
            self.driver에 (expectData self.assertTrue합니다. page_source) 
        는 NoSuchElementException 제외한 예로서 : 
            logging.error (U "查找的页面元素不存在,异常堆栈信息为"+ STR (traceback.format_exc ())) 
        AssertionError를 제외한 예로서 : 
            logging.info (U "搜索'% 의 '期望'% s '이 (가),실패 "% (testdata로, expectData)) 
        E 같은 예외를 제외 : 
            logging.error (U "알 수없는 오류, 오류 메시지 :"+ STR (traceback.format_exc ())) 
        그렇지 않으면 : 
            logging.info (를 통해 U '검색'% s '을 (를) 예상'% s '이 (가)는 " % (testdata로, expectData)) 

    DEF의 tearDown (자동) : 
        self.driver.quit () 


IF __name__ == "__main__": 
    unittest.main ()

  

 

test_dataDrivenByXML

추천

출처www.cnblogs.com/xushuangwaiwai/p/10973023.html