Python unittest测试框架1(单线程顺序执行)

为了解决之前unittest测试中文件下的所有的测试用例全部执行并生成测试报告的问题.

方案如下:

目录结构

│  testlibmain.py
│ 
├─public
│      HTMLTestRunner.py
│     
├─result
├─test_1
│      test1.py
│      test2.py
│     
├─test_2
│      test1.py
│      test2.py
│     
└─test_3
        test1.py
        test2.py

命名规则,测试用例文件夹和文件以test开头,测试用例class名称统一为test

public中保存共通lib,result中保存测试报告

思路:通过当前目录的__init__.py文件实现所有的文件夹下class的导入,该文件为动态生成,遍历当前文件夹下所有的文件夹,获取测试用例的文件名

# -*- coding: utf-8 -*-
import sys,os,time
import unittest

def getdir(currentpath,allpath):
    result = []
    for f in allpath:
        tmp = currentpath+‘\\‘+f
        if(os.path.isdir(tmp)):
            result.append(f)
    return result
def getfilename(dirpath):
    file=os.listdir(dirpath)
    filename=[]
    for f in file:
        if(f[0:4]==‘test‘ and f[-3:]==‘.py‘):
            filename.append(f[0:(len(f)-3)])
    return filename
def genemptyinit(dirpath):
    fp=open(dirpath+‘\\__init__.py‘,"w")
    fp.flush()
    fp.close()
def genallinit():
    fp=open("__init__.py","w")
    fp.write("# -*- coding: utf-8 -*-\n")
    fp.write("import sys\n")
    fp.write("from time import sleep\n")
    currentpath=os.getcwd()
    allfile=os.listdir(currentpath)
    dir=getdir(currentpath,allfile)
    testcase=[]
    for d in dir:
        genemptyinit(d)
        filenames = getfilename(d)
        for f in filenames:
            fp.write(‘from ‘+d+‘ import ‘+ f + ‘\n‘)
            testcase.append(d+‘.‘+f+‘.‘+‘test‘)
    fp.write(‘import unittest\n‘)
    fp.flush()
    fp.close()
    return testcase
testcases = genallinit()
sys.path.append("..")
from fortest import *
from public import HTMLTestRunner
suit=unittest.TestSuite()
for test in testcases:
    suit.addTest(unittest.defaultTestLoader.loadTestsFromName(test))
filename = ‘E:\\python\\selenium\\fortest\\result\\result‘+ time.strftime("_%Y%m%d_%H%M%S",time.localtime(time.time())) +‘.html‘
fp=open(filename,"wb")
runner=HTMLTestRunner.HTMLTestRunner(
    stream = fp,
    title = u‘测试报告‘,
    description = u‘用例执行结果‘)
runner.run(suit)

 

测试用例的写法

# -*- coding: utf-8 -*-
import unittest
class test(unittest.TestCase):
    def setUp(self):
        pass
    def test_login(self):
        u"""test_1 test1登录用例login"""
        pass
    def test_quit(self):
        u"""test_1 test1登录用例quit"""
        pass
    def tearDown(self):
        pass

测试报告如下:

 

多线程执行用例的框架待续...

时间: 2024-10-11 02:13:50

Python unittest测试框架1(单线程顺序执行)的相关文章

python unittest测试框架

所有的用例都必须继承unittest.TestCase setUp:测试之前准备的工作放在前面,比如打开浏览器, tearDown:测试用例执行完要做的,如关闭浏览器 断言: #first_case.py#coding: utf-8 import unittest def div(a, b): return a / b # 1 / 2 = 1 class MyfirstTestCase(unittest.TestCase): def setUp(self): print 'run before

Python接口测试实战3(下)- unittest测试框架

如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战2 - 使用Python发送请求 Python接口测试实战3(上)- Python操作数据库 Python接口测试实战3(下)- unittest测试框架 Python接口测试实战4(上) - 接口测试框架实战 Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

Python 下的unittest测试框架

unittest测试框架,直接上图吧: data:数据:主要格式为CSV:读取方式:csv.reade: public:封装的模块:通用的模块单独封装,所需参数设置为变量: testcase:测试用例:使用unittest框架编写测试用例: report:测试报告:保存测试报告,调用封装好的runcases.py,其中加入时间和HTMLTestRunner生成的带时间的测试报告; run_tests.py:执行测试用例:调用封装好的runcases.py执行用例: mail:发送邮件:封装好发送

python利用unittest测试框架组织测试用例的5种方法

利用unittest测试框架可以编写测试用例,执行方式分两大类:利用main方法和利用testsuite,其中利用测试套件来组织测试用例可以有4种写法. 在此之前,先了解几个概念 TestCase:所有测试用例的基本类,给一个测试方法的名字,就会返回一个测试用例实例: TestSuite:组织测试用例的实例,支持测试用例的添加和删除,最终将传递给  testRunner进行测试执行: TextTestRunner:进行测试用例执行的实例,其中Text的意思是以文本形式显示测试结果.测试的结果会保

selenium一个完整的unittest测试框架格式(单线程,非测试报告)

我在工作中碰到过同事写了些web自动化测试的脚本,有次我问他使用的是什么测试框架, 他居然说不知道.这位同事其实写selenium自动化测试也有些时间了.当我看了他的脚本 不出意外,他使用的就是unittest框架,哈哈.所以我觉得有些同学虽然会做相关东西, 但其实并不知道自己所掌握的东西是什么. 下面呢,我就结合自己写的脚本分析下一个完成的unittest测试框架的包括的内容. 图中我已经写的很详细拉.想交流的可以加QQ群:610845268

python nose测试框架全面介绍十---用例的跳过

又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的SkipTest典型应用  应用一: ''' @auth:hu ''' from nose.plugins.skip import SkipTest @attr(mode=1) def test_learn_1(): raise SkipTest 但这种SkipTest在实际的日志中没有显示Skip关

python nose测试框架全面介绍六--框架函数别名

之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.package中写在__init__.py中的函数 setup_package 用setup, setUp, or setUpPackage也可以 teardown_package 用teardown, tearDown, or tearDownPackage也可以 2.函数形式组成的用例 setup_

python nose测试框架全面介绍七--日志相关

引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的报告只有错误提示,没有日志,查看nose的官网,nose默认支持将日志显示的,如下: 脚本如下: #coding:utf-8 ''' Created on 2016年6月22日 @author: huzq ''' import logging from test_case import new fr

python unittest 测试所有相关单元测试

python unittest 测试所有相关单元测试 python -m unittest discover project_directory "ut_*.py" 原文地址:https://www.cnblogs.com/bingwork/p/9714318.html