• 自动化数据驱动与日常处理


    自定义报告:

      python自带的报告如下图所示(.代表成功e代表失败):

    HTMLTestRunner(自动生成html文件):

    下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html----用于python2

        https://pan.baidu.com/s/1dEZQ0pz-------用于python3

    import unittest
    import  os
    from python_tool import HTMLTestRunner
    
    pwd = os.getcwd()
    # 获取父路径
    path = os.path.abspath(os.path.dirname(pwd) + os.path.sep)
    
    def runner():
         #获取测试用例存在目录的路径
         path_all=path+'\all_test'
         print(path_all)
         discover=unittest.defaultTestLoader.discover(path_all,pattern='test*.py',top_level_dir=None)
         print(discover)
    
         return  discover
    
    if __name__ == '__main__':
        #生成报告文件路径
        report_abspath=path+'\python_tool\result.html'
        fp=open(report_abspath,'wb')
        run=HTMLTestRunner.HTMLTestRunner(
            stream=fp,
            title='测试报告',
            description='用例执行情况'
        )
        run.run(runner())

     结果图:

      

     数据驱动(参数化):

      Excel读取:

    from xlrd import open_workbook
    import os
    class workbook():
        pwd=pwd = os.getcwd()
        path_object=os.path.abspath(os.path.dirname(pwd) + os.path.sep)
        def data(self):
            #生成路径
            path= workbook.path_object+'\data_workbook\week.xlsx'
            # 打开execl
            file=open_workbook(path)
            #读取execl数据中的行数
            data=file.sheet_by_index(0)
            nrows=data.nrows
            # print(data.row_values(1))
            #循环读取行的数据
            cls=[]
            for i in range(nrows):
                if i!=0:
                    cls.append(data.row_values(i))
            return cls

      数据驱动:pip install ddt

        @data(*cls)
        def test_loginone(self,cls):
            print(cls[3])
            # print(self.date[0][3])
            # print(isinstance(self.date[0][3],str))
            self.driver.get(cls[3])
            time.sleep(4)
            self.driver.find_element_by_css_selector(
                'body > div.container-top > div > div.sport-user > div.user-btn > a.btnUser.btnUserLogin').click()
            time.sleep(4)
            text = self.driver.find_element_by_css_selector(
                'body > div.login-bg > div > div > div.login-logo > span').get_attribute('innerHTML')
            print('取值%s', text)
            self.assertIn('用户登录', text, '跳转登录页面失败')

    log日志:

    import logging
    
    class log():
    
            #创建handler终端Hanler:
            consoleHandler = logging.StreamHandler()
            consoleHandler.setLevel(logging.DEBUG)
            #文件Hanler
            fileHandler=logging.FileHandler('log.log',mode='w',encoding='utf-8')
            fileHandler.setLevel(logging.NOTSET)
            #actime:时间
            #name:日志名字
            #lovename:等级名字
            #message:显示信息
            formatter=logging.Formatter('%(actime)s-%(name)s-%(lovelname)s-%(message)s')
            #添加到logger中
            logging.addHandlerRef(consoleHandler)
            logging.addHandlerRef(fileHandler)

      日志级别:

        默认等级:warning

        其他等级:debug

            error

            critical

            info

      日志对象:

      Handler对象:

      Formatter对象(格式输出):

        

     文章链接:http://mumuling.com/?p=93

  • 相关阅读:
    微信开发-如何自定义页面分享元素
    nginx实现日志按天切割
    JS兼容IE浏览器的方法
    mysql 索引过长1071-max key length is 767 byte
    playframework1.x的eclipse插件开源-playtools
    开放平台-web实现人人网第三方登录
    开放平台-web实现QQ第三方登录
    bash shell执行方式
    pushd和popd
    What do cryptic Github comments mean?
  • 原文地址:https://www.cnblogs.com/cpxjl/p/9174562.html
Copyright © 2020-2023  润新知