使用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