셀레늄 (여덟) : 단위 유닛 테스트 프레임 워크를 테스트 (D) HTML 테스트 보고서

1. HTML 테스트 보고서

테스트 요원은 시험 출력을 측정하기 어렵다. 즉, 계량화하고 평가하기 어려운 테스터의 값은, 그 소프트웨어 테스터 깊은 생각합니다. 우리는뿐만 아니라 자동화 된 테스트를하고 많은 시간과 노력을 소비한다. 그래서 우리는 자동화 된 테스트 결과를 입증하기 위해 시험 보고서를 쉽게 이해할 수 아름답고 필요합니다. 물론, 로그 파일을 간단한 충분하지 않습니다.

HTMLTestRunner 확장 파이썬 장치가 프레임 워크를 테스트 유닛 테스트 표준 라이브러리, 그것은 테스트 보고서를 생성하는 HTML을 사용하기 쉬운 것입니다. HTMLTestRunner는 BSD 라이선스로 배포됩니다.

다운로드 : http://tungwaiyip.info/software/HTMLTestRunner.html

이 확장은, 바로 가기 메뉴를 마우스 오른쪽 단추로 클릭 로컬로 저장하려면 저장을 선택 선택한 후, 만 HTMLTestRunner.py 파일 매우 간단합니다. 설치는 다음 파이썬 설치 디렉토리에 복사 할 수 있습니다, 매우 간단합니다.

윈도우 : Python36 \ lib 디렉토리 디렉토리에 저장에 다운로드 한 파일 ... \. pycharm는 lib 디렉토리 디렉토리를 pycharm 찾을 파일을 붙여 넣기 할 수 없습니다.

리눅스 : 우분투는, 예를 들어, 먼저 필요가 터미널을 열고 파이썬을 설치 디렉토리를 찾을 수 있습니다. 터미널을 연 후, 파이썬 대화 형 모드로 파이썬 명령 입력, 당신은 파이썬 sys.path에 의해 설치의 디렉토리를 볼 수 있습니다. 다음 /usr/local/Python3.6/dist-packages/ 디렉토리에 루트 HTMLTestRunner.py로 파일을 복사합니다. 시스템 오류가 아닌 경우 파이썬 대화 형 모드에서 참조 HTMLTestRunner 모듈은 다음 성공적으로 추가되었습니다.

1.1 수정 HTMLTestRunner

HTMLTestRunner.py이 파이썬 2 개발을 기반으로하기 때문에, 위해 파이썬 3 환경을 지원하기 위해, 그들 중 일부에 대한 필요성을 수정할 수 있습니다. HTMLTestRunner.py 편집기를 수행하여 파일을 엽니 다.

# 94 라인 
오기 StringIO는 
수정 된 : 
오기 IO 

# 539 라인 
self.outputBuffer = StringIO.StringIO () 
로 개정 : 
self.outputBuffer = io.StringIO () 

# 631 라인 
인쇄 >> sys.stderr를, ' \ n 시간 경과 : S % ' % (self.stopTime- self.startTime) 
에 수정 : 
인쇄 (sys.stderr를, ' \ N 세계 경과 : S % ' % (self.stopTime- self.startTime)) 

# 라인 (642)에 
IF  하지 RMAP. 것은 has_key (CLS) : 
: 같이 개정 
IF  하지 CLSRMAP : 

# 766 라인 
UO o.decode = ( ' . 라틴어 1 ' ) 
로 변형 : 
UO = E 

# 772 행 
UE o.decode = ( ' . 라틴어 1 ' ) 
: 같이 변형 
UE = E

1.2 HTML 테스트 보고서를 생성

의는 예를 들어 테스트 보고서 등 HTMLTestRunner의 test_baidu.py 파일을 생성하기 위해 계속하자.

에서 셀레늄 수입 webdriver의
 수입 유닛 테스트
 에서 HTMLTestRunner의 수입 HTMLTestRunner
 에서 시간을 가져 수면 

클래스 바이두 (unittest.TestCase) : 

    데프 설정 (자동) : 
        self.driver = webdriver.Chrome () 
        self.driver.implicitly_wait ( 10 ) 
        self.base_url = " http://www.baidu.com " 

    데프 test_baidu_search (자기) : 
        드라이버 = self.driver 
        driver.get (self.base_url)
        driver.find_element_by_id ( " kw " ) .send_keys ( " HTMLTestRunner " ) 
        driver.find_element_by_id ( " SU " ) .click () 
        절전 ( 5 ) 

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

의 경우  __name__ == " __main__ " : 
    testunit = unittest.TestSuite () 
    testunit.addTest (바이 ( " test_baidu_search " )) 

    # 定义报告存放路径 
    FP = 개방 ( ' ./result.html ' , ' WB ')
     #은 시험 보고서를 정의 
    러너 = HTMLTestRunner (스트림 = FP, 
                            제목 = ' 바이두 검색 시험 성적서 ' , 
                            설명 = ' 예 구현 : ' , 
                            다변 = 2 
                            ) 
    runner.run (TestUnit) # 실행 테스트 
    fp.close을 () # 보고서 파일을 닫습니다

첫째, 수입 모듈은 HTMLTestRunner 가져 오기와.

둘째, open () 메서드는하지 않을 경우, 파일이 자동으로 절단, 현재 디렉토리에 열려있는 바이너리 모듈 result.html을 작성합니다.

다음으로, 카테고리 HTMLTestRunner HTMLTestRunner 통화 모듈 미만. 지정 시험 보고서 파일, 테스트 보고서 제목을 정의하는 데 사용 제목, 자막 정의 된 테스트 보고서에 대한 설명을 스트리밍.

마지막으로, () 메소드는 테스트 실행에 의해 조립 테스트 스위트 HTMLTestRunner를 실행합니다. 마지막) (가까운에 의해 시험 보고서 파일을 끕니다.

사용 사례는 현재 디렉토리보기 테스트 보고서 생성에서 "result.html"파일을 열고, 완성 된 실행이 있습니다.

 

1.3 시험은 더 읽기보고

이 테스트 클래스 및 테스트 방법의 무리를 나열하기 때문에 이제 생성 된 테스트 보고서는 보이지 않습니다, 우리는주의 깊게 이름은 "test_case1"인 경우, 시험 보고서의 가독성을 개선하기 위해 명명 된 테스트 클래스 및 테스트 방법을 배치 할 필요가 "test_case2"등등, 다음 보고서는 가독성 테스트의 기능은 무엇에도 스크립트 개발자는 "test_case1"명확하지 않다 아마도 오랜 시간을 잃게됩니다.

기능 테스트 케이스를 작성할 때, 각 테스트 케이스는 우리가 또한 테스트 케이스를 자동화의 제목을 추가 할 수 있습니다, 제목이? 파이썬 코멘트 : 그하자 이전의 다른 지식을 배웁니다. 코멘트라는주의 사항이 파이썬, 다른라는 문서화 문자열은, 전자는 함수, 클래스, 메소드를 설명하는 데 사용되는 일반적인 주석이다.

 삼중 따옴표로 클래스 나 메소드의 하단에서 ( "" "" ""또는 ""이 "") 주석의 문서화 문자열 유형을 추가하는 등 의견이 평시에 표시되지 않습니다,라고 할 때, 도움을 통해 볼 수 있습니다 () 메소드 클래스 나 메소드를합니다.

위로 기원의 질문에, HTMLTestRunner는 주석의 문서화 문자열 유형을 읽을 수 있습니다. 우리가 테스트 클래스 나 메소드에 필요 그래서 이러한 종류의 주석을 추가 할 수 있습니다.

클래스 바이두 (unittest.TestCase) :
     '' ' Baidu 검색 테스트 ' '' 

    DEF test_baidu_search (자체) :
         '' ' 검색 키워드 : HTMLTestRunner ' ''

시험 보고서를 볼 수있는 테스트 케이스를 재 실행합니다.

 

1.4 시험 보고서 파일 이름

在每次运行测试之前,都要手动修改报告的名称,如果忘记修改,就会把之前的报告覆盖,这样做显得很麻烦,那么有没有办法可以使每次删除的报告名称都不重复并且有意义呢?最好的方法是在报告名称中加入当前时间,这样生成的报告既不会重叠,又能更清晰的知道报告生成的时间。

Python的time模块中提供了丰富的关于时间操作的方法,可以利用这些方法来完成这个需求。

time.time():获取当前时间戳。

time.ctime():当前时间的字符串形式。

time.localtime():当前时间的struct_time形式。

time.strftime():用来获得当前时间,可以将时间格式化为字符串。

 Python中时间日期格式化符号(区分大小写)。

 %y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

继续打开测试用例,做如下修改。 

import time

#.............

if __name__ == "__main__":
    testunit = unittest.TestSuite()
    testunit.addTest(Baidu("test_baidu_search"))

    #按照一定格式获取当前时间
    now = time.strftime("%Y-%m-%d %H_%M_%S")

    #定义报告存放路径
    filename = './'+now+'result.html'
    fp = open(filename,'wb')
    #定义测试报告
    runner = HTMLTestRunner(stream=fp,
                            title='百度搜索测试报告',
                            description='用例执行情况:',
                            verbosity=2
                            )
    runner.run(testunit) #运行测试用例
    fp.close() #关闭报告文件

通过strftime()方法以指定的格式获取当前时间,将当前时间的字符串赋值给now变量。将now通过加号(+)拼接到生成的测试报告的文件名中。再次运行测试用例,生成测试报告。

 

 

1.5 项目集成测试报告

目前HTMLTestRunner只是针对单个测试文件生成测试报告,我们的最终目的是希望将它集成到runtest.py文件中,使其作用于整个测试项目。下面打开runtest.py文件进行修改,还有就是把test_baidu.py改回来。

import unittest
from HTMLTestRunner import HTMLTestRunner
import time

#指定测试用例为当前文件夹下的test_case目录
test_dir = './test_case'
discover = unittest.defaultTestLoader.discover(test_dir,pattern='test_*.py')

if __name__ == "__main__":
    # 按照一定格式获取当前时间
    now = time.strftime("%Y-%m-%d %H_%M_%S")

    # 定义报告存放路径
    filename = './' + now + ' 그리고 result.html ' 
    FP = 열기 (파일 이름, ' WB ' )
     #은 시험 보고서를 정의 
    러너 = HTMLTestRunner (스트림 = FP, 
                            제목 = ' 바이두 검색 시험 성적서 ' , 
                            설명 = ' 예와 구현 : ' , 
                            다변 = 2 
                            ) 
    러너 .RUN (디스 커버)   # 운영하는 테스트 케이스 
    fp.close ()   # 보고서 파일 닫기

생성 된 HTML 테스트 보고서 :

추천

출처www.cnblogs.com/liuhui0308/p/11975305.html