• 使用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 . eportlog.html

  • 相关阅读:
    random、shutil、shevle、标准输入输出错误流
    Python中Json 和 pickle 详解
    Python 中的sys、os、os.path模块总结
    Python 中time,calendar,datatime模块总结
    包的概念和导入包的方法
    Python 中模块及其导入方式
    迭代器和生成器
    python 函数参数
    JAVA 配置Path环境变量
    腾讯云服务器简单配置web项目
  • 原文地址:https://www.cnblogs.com/7047-zfy/p/13535489.html
Copyright © 2020-2023  润新知