摆脱京城贵妇unittest的骚套路discover,自定义用例执行顺序。

# 调试了一下午跟路径拆分逻辑有关的东西,脑阔疼,代码能力薄弱的一批, 还有前人栽htmltestrunner后入乘凉的感觉不要太爽

# 用TestLoader().discover()找到的用例添加进testsuite中执行顺序是按照ASCII顺序来搞得,所以写了这个找固定目录及子目录下的所有固定格式case并自动导入

def find_case(case_path):    if os.path.exists(case_path):        script_list = os.listdir(case_path)        for script in script_list:            testScript = os.path.join(case_path, script)            if os.path.isdir(testScript):                find_case(testScript)            elif script[0:3] == "NO_" and script[-3:] == ".py":                script_dir = os.path.dirname(testScript)                script_path = ".".join(script_dir.split("\\")[2:])                path = "from " + script_path + " import "                exec_str = path + script[:-3]                exec(exec_str, globals())                case = "%s.%s(‘%s‘)" % (script[:-3], script[:-3], "test_procedure")                case_list.append(case)        return case_list
def get_suite(case_path):    cases = find_case(case_path)    for case in cases:        suite.addTest(eval(case))    return suite

pasting

def TestSuitRunner(rootDir=CASE_PATH,                   Report_Name=‘XXX-X-V2.0 AutoTestReport.html‘,                   tester=‘Mariahcat‘):    test_suite = get_suite(rootDir)    filePath = os.path.join(REPORT_PATH, Report_Name)    fp = open(filePath, ‘wb‘)    runner = HTMLTestRunner.HTMLTestRunner(        stream=fp,        title=Report_Name,        tester=tester        )    runner.run(test_suite)    fp.close()
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/7/14 16:09# @Author  : Mariahcat# @Desc    :

from ATFactory.Common.ParameterFactory.Config import Config, CONFIG_FILEfrom ATFactory.Common.ReportFactory import TestSuitFactory

config = Config(config=CONFIG_FILE)REPORT_INFO = config.get("REPROT INFO")test_dir = REPORT_INFO.get(‘TEST_DIR‘)report_name = REPORT_INFO.get(‘REPORT_NAME‘)tester = REPORT_INFO.get(‘TESTER‘)

TestSuitFactory.TestSuitRunner(rootDir=test_dir, Report_Name=report_name, tester=tester)

原文地址:https://www.cnblogs.com/mariahcat/p/9310544.html

时间: 2024-10-15 09:21:28

摆脱京城贵妇unittest的骚套路discover,自定义用例执行顺序。的相关文章

利用Python的unittest单元测试框架的discover方法批量执行脚本用例

1.在用Python自动化时,执行单个脚本用例那都是so easying当脚本用例不断地增多时,那就蒙蔽了,一个个来跑到什么时候才跑完,所以discover方法作用就出来,废话不多,小编直接上代码了,如有疑问,可以咨询小编 #!/usr/bin/python# -*- coding: utf-8 -*-from selenium import webdriverimport time,osfrom selenium.webdriver.common.action_chains import Ac

unittest学习3:用例执行

unittest执行用例方法: 1.单个py文件 if __name__ == "__main__": unittest.main() 2.多个py文件,引用测试用例,使用测试套件,执行所加载到套件中用例 import unittest from test_case.test_study1 import Test_Study1 from test_case.test_study2_skip import Test_Study2 # 实例化测试套件及加载用例 suit = unittes

python unittest控制用例的执行顺序

为什么要进行顺序控制呢?使用过testng的同学就知道,它相对于junit来说有更强大的功能,其中的一个功能就是依赖测试.什么是依赖测试呢?简单的说一下就是,A方法运行时,其中有个变量的取值是B方法的动态产出值.这样就必须先执行B方法.testng的test方法有dependson属性来制定方法的依赖.但是向python的unittet框架,他类似于junit,没有依赖测试的功能.unittest的main()方法执行用例的顺序是按照测试类.测试方法的名字的ASCII顺序来执行测试方法.如果想要

python+unittest 控制用例的执行顺序

unittest的main()方法执行用例的顺序是按照测试类.测试方法的名字的ASCII顺序来执行测试方法.所以可能执行的顺序和你想要的顺序不一样,可能通过下面两种方法修改执行顺序 1. 通过TestSuite按照顺序依次添加想要执行的方法 suite = unittest.TestSuite() suite.addTest(Test("test_operator_add")) suite.addTest(Test("test_operator_del")) 这样方

unittest用例执行的顺序

"""用例的执行顺序涉及多个层级:在多个测试目录的情况下,先执行哪个目录?在多个测试文件的情况下,先执行哪个文件?在多个测试类的情况下,先执行哪个测试类?在多个测试方法(用例)的情况下,先执行哪个测试方法?""" import unittestclass TestBdd(unittest.TestCase): def setUp(self): print("test TestBdd:") def test_ccc(self):

python unittest用例执行方式

最简单的方式不解释import unittest unittest.main() 一.unittest模块的各个属性说明 点击返回目录 先来聊一聊unittest模块的各个属性,所谓知己知彼方能百战百胜,了解unittest的各个属性,对于后续编写用例有很大的帮助. 1.unittest的属性如下: ['BaseTestSuite', 'FunctionTestCase', 'SkipTest', 'TestCase', 'TestLoader', 'TestProgram', 'TestRes

unittest框架扩展(自动生成用例)自动化-上

一.思想: 基于数据驱动和代码驱动结合的自动化测试框架. 二.自动化测试框架步骤: 1.获取用例,用例格式:.ymal 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 6.日志模块 三.基于上一篇文章中,使用unittest模块框架,编写自动化调用接口测试,拷贝生成用例的python文件作为模板,在conf下新建base.txt,只需每次修改文件中类名:和文件名:生成同样的python文件作为用例即可. base.txt如下: import unittest,requests imp

第二种方式,修改python unittest的执行顺序,使用猴子补丁

1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 之前写的,不是猴子补丁,而是要把Test用例的类名传到run里面去执行,与原生的使用有一点区别.现在修改成,用的时候代码与原生unittest完全一模一样,但运行时候使用与原生不同的逻辑. import time import unittest from unittest.main import TestProgram from app.utils.utils_ydf import LogManager c

Python Unittest框架用例执行失败自动截图

原生的unittest框架是不支持case失败后自动截图功能,网上的解决办法,大体上分为两种: 1.加装饰器 可参考让unittest框架在fail时自动截图的装饰器.给测试用例添加多个装饰器的问题 (python unittest.TestCase) 2.封装断言 可参考Getting Python's unittest results in a tearDown() method.python 自动化测试,求助:如何判断用例断言失败后自动截图 原文地址:https://www.cnblogs