使用unittest測試框架並集成Airtest測試報告


 

1.將測試需要的所有步驟集中到一個class,例:

class  Test( object ):
     '''
     登錄租戶使用,需要瀏覽器顯示書簽並且triones-web在書簽欄中
     瀏覽器有賬號密碼自動填充
     登錄賬號在乘法雲Finance(克隆)租戶中
     '''
 
     def  test001( self ):
         t =  0
         #測試內容
         return  t
 
     '''
     測試錄入憑證使用,可在登錄之后調用
     '''
 
     def  test002( self , account_code):
         t =  0
         #測試內容
         return  t

 

2.在與項目同名py文件中引入unittest

import  time
from  airtest.core.api import  *
import  sys
import  unittest
import  HTMLTestRunner
from  main import  Test
def  custom_resize_method(w, h, sch_resolution, src_resolution):
     return  int (w), int (h)
 
# 替換默認的RESIZE_METHOD
ST.RESIZE_METHOD =  custom_resize_method
ST.THRESHOLD_STRICT =  0.9   # assert_exists語句的默認閾值,一般比THRESHOLD更高一些
ST.THRESHOLD =  0.80   # 其他語句的默認閾值
auto_setup(__file__)
# 引入unittest
class  fs_finance(unittest.TestCase):
     def  __init__( self , methodName = 'runTest' ):
         super (fs_finance, self ).__init__(methodName)
 
     @staticmethod
     def  parametrize(testcase_klass):
         testloader =  unittest.TestLoader()
         testnames =  testloader.getTestCaseNames(testcase_klass)
         tesenames_add =  [
             'test001' ,
             'test001'
         ]
         print (testnames)
         suite =  unittest.TestSuite()
         for  name in  testnames:
             suite.addTest(testcase_klass(name))
         return  suite
#增加測試用例
class  Testadd(fs_finance):
     # 這里的裝飾器@classmethod必須有,標識為一個類方法
     @classmethod 
     def  setUpClass( self ):
         """setUpClass為類的初始化方法,在整個類運行前執行只執行一次"""
         pass
 
     def  setUp( self ):
         """為測試方法的初始化,每個case運行前執行一次"""
         pass
 
     def  tearDown( self ):
         """清理函數,和setUp類似,每個case執行后執行一次"""
         pass
 
     @classmethod
     def  tearDownClass( cls ):
         """和setUpclass類似,在調用整個類測試方法完成后執行一次"""
         pass
 
     #測試用例1
     def  test001( self ):
         """test001,這里的字會展示到測試報告的'用例集/測試用例'列"""
         Test().test001()
         self .assertEqual(result, 0 )
 
     #測試用例2
     def  test002( self ):
         """test002"""
         result =  Test().test002()
         self .assertEqual(result, 0 )
 
class  Test001( object ):
     # 替換默認的RESIZE_METHOD
     def  test( self ):
         suite =  unittest.TestSuite()
         with open ( './report/test_{}.html' . format (time.strftime( '%Y%m%d%H%M' )), 'wb' ) as fp:
             runner =  HTMLTestRunner.HTMLTestReportCN(
                 stream = fp,
                 verbosity = 2 ,
                 title = u '自動化測試報告' ,
                 description = '詳細測試用例結果' # 不傳默認為空
                 tester = u 'test'
             )
             runner.run(suite)
         fp.close()
 
Test001().test()

3.將下面的HTMLTestRunner.py復制到測試項目目錄下與項目同名py文件同級

HTMLTestRunner.py

4.airtest的生成報告的命令需要指定log.html的路徑 

          --outfile .\report\log.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM