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

自定义报告:

  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

原文地址:https://www.cnblogs.com/cpxjl/p/9174562.html