搭建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自动化用例框架--问题的主要内容,如果未能解决你的问题,请参考以下文章

python之web自动化测试框架

python 之 自制测试框架

python之web自动化测试框架

API接口自动化测试框架搭建-公共方法-封装读取excel用例数据方法read_excel.py

搭建自动化测试框架Python3+Selenium

Python Api接口自动化测试框架 代码写用例