搭建python自动化用例框架--问题

根据https://blog.csdn.net/huilan_same/article/details/76572411搭建python自动化框架过程所遇问题:

一、缺少测试套:测试套编码如下,会运行E:\Software\sichuantest\test\case目录下所有与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、通过用例名拼接日志名的方式区分

暂时不会,哈哈哈哈哈哈

猜你喜欢

转载自www.cnblogs.com/ziyuyuyu/p/9184192.html