自定义报告:
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())
结果图:
扫描二维码关注公众号,回复:
1595656 查看本文章
数据驱动(参数化):
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对象(格式输出):