搭建python自动化用例框架--问题
Posted ziyuyuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建python自动化用例框架--问题相关的知识,希望对你有一定的参考价值。
根据https://blog.csdn.net/huilan_same/article/details/76572411搭建python自动化框架过程所遇问题:
一、缺少测试套:测试套编码如下,会运行E:Softwaresichuantest estcase目录下所有与test_*.py匹配的用例
import unittest from utils.HTMLTestRunner import HTMLTestRunner import time #注意使用套件时,在单个py文件中下的多个用例用 (类名("方法名")), #导入多个py的类下,用(py名.类名) allcase = ‘E:\Software\sichuantest\test\case‘ #指明要自动查找的py文件所在文件夹路径 def createSuite(): testunit = unittest.TestSuite() discover = unittest.defaultTestLoader.discover(allcase, #查找的文件夹路径 pattern = ‘test_*.py‘, #要测试的模块名,以start开头的.py文件 top_level_dir = None) #测试模块的顶层目录,即测试用例不是放在多级目录下,设置为none # 使用for循环出suite,再循环出case for suite in discover: for case in suite: testunit.addTests(case) print(testunit) return testunit if __name__ == ‘__main__‘: now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) #获取当前时间 report = ‘E:\Software\sichuantest\report\‘+now+"test_suit.html" #根据当前时间来拼接.xml报告文件名 with open(report, ‘wb‘) as f: runner = HTMLTestRunner(f, verbosity=2, title=‘html报告test‘, description=‘html报告内容‘) runner.run(createSuite())
二、不同用例生成的report.xml会被覆盖,将生成.xml的代码修改如下
if __name__ == ‘__main__‘: file_name = os.path.split(__file__)[-1].split(‘.‘)[0] #获取用例文件名 report = REPORT_PATH + ‘\‘ + file_name + ‘_report.html‘ #根据文件名来拼接.xml报告文件名 with open(report, ‘wb‘) as f: runner = HTMLTestRunner(f, verbosity=2, title=‘html报告test‘, description=‘html报告内容‘) runner.run(TestBaiDu(‘test_search‘))
三、单个用例日志名统一为test.log,会导致所有用例的日志均打在test.log里面
1、通过将用例文件名也拼接到日志中的方式区分
在log.py文件中修改pattern的值,修改如下
pattern = c.get(‘pattern‘) if c and c.get(‘pattern‘) else ‘%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s - %(message)s‘
在config.yml文件中修改log的值,修改如下
log: file_name: test.log backup: 5 console_level: WARNING file_level: DEBUG pattern: ‘%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s - %(message)s‘
2、通过用例名拼接日志名的方式区分
暂时不会,哈哈哈哈哈哈
以上是关于搭建python自动化用例框架--问题的主要内容,如果未能解决你的问题,请参考以下文章