unittest改写传参方法
Python主要讲究简洁简单使用,所以它不像junit一样支持参数化测试,需要改装一下也可以传参。直接上代码实例
- import unittest
- class ParametrizedTestCase(unittest.TestCase):
- """ TestCase classes that want to be parametrized should
- inherit from this class.
- """
- def __init__(self, methodName='runTest', param=None):
- super(ParametrizedTestCase, self).__init__(methodName)
- self.param = param
- @staticmethod
- def parametrize(testcase_klass, param=None):
- """ Create a suite containing all tests taken from the given
- subclass, passing them the parameter 'param'.
- """
- testloader = unittest.TestLoader()
- testnames = testloader.getTestCaseNames(testcase_klass)
- suite = unittest.TestSuite()
- for name in testnames:
- suite.addTest(testcase_klass(name, param=param))
- return suite
- #####################################################
- ##用法-testcase
- class TestOne(ParametrizedTestCase):
- def test_something(self):
- print 'param =', self.param
- self.assertEqual(1, 1)
- def test_something_else(self):
- self.assertEqual(2, 2)
- ##用法-测试
- suite = unittest.TestSuite()
- suite.addTest(ParametrizedTestCase.parametrize(TestOne, param=42))
- suite.addTest(ParametrizedTestCase.parametrize(TestOne, param=13))
- unittest.TextTestRunner(verbosity=2).run(suite)
- #结果
- test_something (__main__.TestOne) ... param = 42
- ok
- test_something_else (__main__.TestOne) ... ok
- test_something (__main__.TestOne) ... param = 13
- ok
- test_something_else (__main__.TestOne) ... ok
- ----------------------------------------------------------------------
- Ran 4 tests in 0.000s
- OK
或者可以使用meta类来 解决这个问题
- import unittest
- l = [["foo", "a", "a",], ["bar", "a", "a"], ["lee", "b", "b"]]
- class TestSequenceMeta(type):
- def __new__(mcs, name, bases, dict):
- def gen_test(a, b):
- def test(self):
- self.assertEqual(a, b)
- return test
- for tname, a, b in l:
- test_name = "test_%s" % tname
- dict[test_name] = gen_test(a,b)
- return type.__new__(mcs, name, bases, dict)
- class TestSequence(unittest.TestCase):
- __metaclass__ = TestSequenceMeta
- if __name__ == '__main__':
- unittest.main()
转载自:http://blog.csdn.net/hqzxsc2006/article/details/50125735
unittest改写传参方法的更多相关文章
- 学习chrome 插件 DHC ,http请求传参方法
DHC的简介 DHC是一款可以帮助用户使用chrome插件模拟HTTP客户端发送测试数据到服务器的谷歌浏览器插件,在chrome中安装了DHC插件以后,就可在服务器端代码初步完成的时候,使用DHC进行 ...
- jquery-uploadify传参方法
jquery-uploadify传参方法$(document).ready(function () { $("#uploadify").uploadify({ 'uploader' ...
- js方法之间的调用之——传参方法
在最近项目需求中发现,完成一些功能的时候总是要调很多结构类似的方法,写起来很繁琐,所以就想写一个“万能”方法,是的代码更简洁.即:把一个方法作为参数传给这个“万能”方法,让它去执行你给定的方法,就类似 ...
- 定时器setTimeout()的传参方法
更具体的代码:http://www.cnblogs.com/3body/p/5416830.html // 由于setTimeout()的延迟执行特性,所以在执行的函数中直接使用外部函数的变量是无法获 ...
- AngularJS中页面传参方法
1.基于ui-router的页面跳转传参 (1) 用ui-router定义路由,比如有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的 ...
- TKinter当Label绑定bind事件时传参方法
记录下tkinter的 当在label绑定bind事件时,遇到需要传参时的解决方法(因为有event存在 所以不能直接传参) https://www.cnblogs.com/liyuanhong/ar ...
- 不用Ajax时的传参方法
不用Ajax时的怎么传参 创建一个form表单 function test(){ var params = { "参数名": "参数值" }; postExce ...
- tp5闭包子查询传参方法
在channel表中查询status,channel_id,channel_name,account_level这些字段,且这些字段的channel_id不在adv_id为$id的表adv_chann ...
- laravel console handle 传参方法
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Libs\wxpay\CLogFile ...
随机推荐
- java 中 ResourceBundle 使用 国际化使用
java 中 ResourceBundle 使用 可以根据以下类进行获取国际化文件: package org.mybatis.generator.internal.util.messages; imp ...
- Oracle分析函数-keep(dense_rank first/last)
select * from criss_sales where dept_id = 'D02' order by sale_date ; 此时有个新需求,希望查看部门 D02 内,销售记录时间最早,销 ...
- Linux 下MQ的安装和配置亲测
开篇之前奉上几条黄金链接: MQ参考文档 http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0m0/index.jsp?topic=%2Fcom.ib ...
- 【Clojure 基本知识】小技巧s
;;模拟console原位更新输出 ;;空格擦除法,输出空格,是为了擦除短字符串尾部没有占用的位置,因为退格只是回退,并不删除(dotimes [_ 10](let [n (rand) sn (.su ...
- laravel5.8笔记二:部署
部署项目之前需要知道的几件事 1.有几个模块(admin,index,wap,api) 2.有几个数据库(mysql1,mysql2,mysql3) 3.有那些缓存(redis1,redis2,red ...
- python中的pymongo连接脚本
author: headsen chen date: 2019-04-12 17:39:12 先安装python3,pymongo [root@localhost mnt]# cat /root/p ...
- JavaSE assert断言的学习
在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语 ...
- 创建多进程Process
注册一个进程: from multiprocessing import Process import os def func(args): # 在子进程里面.args接收一个参数,如果要接受多个参数使 ...
- K XOR Clique
BaoBao has a sequence a1,a2,...,an. He would like to find a subset S of {1,2,...,n} such that ∀i ...
- socket.io 中文文档
Socket.io是一个WebSocket库,包括了客户端的js和服务器端的nodejs,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用.它会自动根据浏览器从WebSocket.AJAX长轮 ...