大家熟知python中很多测试框架,经常使用的就是unittest、pytest、seldom等等。
而在做UI自动化或者接口自动化时,不知道怎么去美化你的报告。
1.当我们需要调试一部分用例,可以根据用例名称数字进行拼接然后加入测试套件,进行执行。
```python
if __name__ == '__main__':
suite = unittest.TestSuite()
ids = 165
while ids < 173:
basename = 'test_' + str(ids) + '_LCL'
suite.addTest(CreditLoanMarket(basename))
print '执行的用例为:{}'.format(basename)
ids += 1
suite.debug()
2.执行多个文件的用例 比如文件1,序号是1-50 文件2是序号51-100 文件3是序号101-150 你想一起执行这三个用例文件。并打印出日志**
```python
# -*-coding:utf-8 -*-
"""
根据用例文件特征执行多个用例文件
"""
import logging
import os
from public.Login_logout import *
from public.htmlrunner import *
filepath = os.path.normpath(os.path.join(os.path.join(os.path.dirname(os.path.dirname(__file__)), "test_case")))
logpath = os.path.normpath(os.path.join(os.path.join(os.path.dirname(os.path.dirname(__file__)))))
print logpath
reload(sys)
sys.setdefaultencoding('utf-8')
def all_case():
logger = logging.getLogger()
logger.setLevel(logging.INFO) # log等级总开关
# 第二步,创建一个handler,用于写入日志文件
nowtime = time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time()))
log_name = nowtime + '.log'
logfile = os.path.join(logpath+'/logs', log_name)
# 创建文件handle 以及输出控制台handle
fh = logging.FileHandler(logfile, mode='w')
fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关
ch = logging.StreamHandler()
ch.setLevel(logging.INFO) # 输出到console的log等级的开关
# 第三步,定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 第四步,将logger添加到handler里面
logger.addHandler(fh)
logger.addHandler(ch)
testcase = unittest.TestSuite() # 加载测试套件
# 用例的目录,关键字进行匹配
discover = unittest.defaultTestLoader.discover(filepath, pattern='test_*.py', top_level_dir=None)
testcase.addTest(discover)
print testcase
fp = file(filepath + '/report/report.html', 'wb')
runner = HTMLTestRunner(stream=fp, title=r'UI自动化测试报告', description=r'商城')
runner.run(testcase)
fp.close()
pass
if __name__ == '__main__':
all_case()
3.用装饰器来实现报告
import unittest
from functools import wraps
import os
from htmlrunner import HTMLTestRunner
filepath = os.path.normpath(os.path.join(os.path.join(os.path.dirname(os.path.dirname(__file__)), "Automation/Tcase")))
def UI_Report(testcase, ReportPath):
"""
根据传入的testcase 来判断执行哪种报告生成方式。
"""
def Report(s):
@wraps(s)
def Great_report():
AA = hasattr(testcase, '__call__')
if AA:
suite = unittest.makeSuite(testcase)
fp = file(ReportPath, 'wb')
runner = HTMLTestRunner(stream=fp, title=r'UI自动化', description=r'接口自动化测试报告')
runner.run(suite)
fp.close()
else:
fp = file(ReportPath, 'wb')
runner = HTMLTestRunner(stream=fp, title=r'UI自动化测试报告', description=r'商城')
runner.run(testcase)
fp.close()
return Great_report
return Report
我们在实际使用过程中就可以
if __name__ == "__main__":
@UI_Report(testcase=CreditHomePage, ReportPath='./report/result.html')
def ass():
pass
ass()
python3的htmlrunner
https://download.csdn.net/download/zhu942100/21147135
python2的htmlrunner
https://download.csdn.net/download/zhu942100/21146985
|