Python主要讲究简洁简单使用,所以它不像junit一样支持参数化测试,需要改装一下也可以传参。直接上代码实例

  1. import unittest
  2. class ParametrizedTestCase(unittest.TestCase):
  3. """ TestCase classes that want to be parametrized should
  4. inherit from this class.
  5. """
  6. def __init__(self, methodName='runTest', param=None):
  7. super(ParametrizedTestCase, self).__init__(methodName)
  8. self.param = param
  9. @staticmethod
  10. def parametrize(testcase_klass, param=None):
  11. """ Create a suite containing all tests taken from the given
  12. subclass, passing them the parameter 'param'.
  13. """
  14. testloader = unittest.TestLoader()
  15. testnames = testloader.getTestCaseNames(testcase_klass)
  16. suite = unittest.TestSuite()
  17. for name in testnames:
  18. suite.addTest(testcase_klass(name, param=param))
  19. return suite
  20. #####################################################
  21. ##用法-testcase
  22. class TestOne(ParametrizedTestCase):
  23. def test_something(self):
  24. print 'param =', self.param
  25. self.assertEqual(1, 1)
  26. def test_something_else(self):
  27. self.assertEqual(2, 2)
  28. ##用法-测试
  29. suite = unittest.TestSuite()
  30. suite.addTest(ParametrizedTestCase.parametrize(TestOne, param=42))
  31. suite.addTest(ParametrizedTestCase.parametrize(TestOne, param=13))
  32. unittest.TextTestRunner(verbosity=2).run(suite)
  33. #结果
  34. test_something (__main__.TestOne) ... param = 42
  35. ok
  36. test_something_else (__main__.TestOne) ... ok
  37. test_something (__main__.TestOne) ... param = 13
  38. ok
  39. test_something_else (__main__.TestOne) ... ok
  40. ----------------------------------------------------------------------
  41. Ran 4 tests in 0.000s
  42. OK

或者可以使用meta类来 解决这个问题

    1. import unittest
    2. l = [["foo", "a", "a",], ["bar", "a", "a"], ["lee", "b", "b"]]
    3. class TestSequenceMeta(type):
    4. def __new__(mcs, name, bases, dict):
    5. def gen_test(a, b):
    6. def test(self):
    7. self.assertEqual(a, b)
    8. return test
    9. for tname, a, b in l:
    10. test_name = "test_%s" % tname
    11. dict[test_name] = gen_test(a,b)
    12. return type.__new__(mcs, name, bases, dict)
    13. class TestSequence(unittest.TestCase):
    14. __metaclass__ = TestSequenceMeta
    15. if __name__ == '__main__':
    16. unittest.main()

转载自:http://blog.csdn.net/hqzxsc2006/article/details/50125735

unittest改写传参方法的更多相关文章

  1. 学习chrome 插件 DHC ,http请求传参方法

    DHC的简介 DHC是一款可以帮助用户使用chrome插件模拟HTTP客户端发送测试数据到服务器的谷歌浏览器插件,在chrome中安装了DHC插件以后,就可在服务器端代码初步完成的时候,使用DHC进行 ...

  2. jquery-uploadify传参方法

    jquery-uploadify传参方法$(document).ready(function () { $("#uploadify").uploadify({ 'uploader' ...

  3. js方法之间的调用之——传参方法

    在最近项目需求中发现,完成一些功能的时候总是要调很多结构类似的方法,写起来很繁琐,所以就想写一个“万能”方法,是的代码更简洁.即:把一个方法作为参数传给这个“万能”方法,让它去执行你给定的方法,就类似 ...

  4. 定时器setTimeout()的传参方法

    更具体的代码:http://www.cnblogs.com/3body/p/5416830.html // 由于setTimeout()的延迟执行特性,所以在执行的函数中直接使用外部函数的变量是无法获 ...

  5. AngularJS中页面传参方法

    1.基于ui-router的页面跳转传参 (1) 用ui-router定义路由,比如有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的 ...

  6. TKinter当Label绑定bind事件时传参方法

    记录下tkinter的 当在label绑定bind事件时,遇到需要传参时的解决方法(因为有event存在 所以不能直接传参) https://www.cnblogs.com/liyuanhong/ar ...

  7. 不用Ajax时的传参方法

    不用Ajax时的怎么传参 创建一个form表单 function test(){ var params = { "参数名": "参数值" }; postExce ...

  8. tp5闭包子查询传参方法

    在channel表中查询status,channel_id,channel_name,account_level这些字段,且这些字段的channel_id不在adv_id为$id的表adv_chann ...

  9. laravel console handle 传参方法

    <?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Libs\wxpay\CLogFile ...

随机推荐

  1. opencv利用Cascade Classifier训练人脸检测器

    opencv默认提供了haar特征和lbp特征训练的人脸分类器,但是效果不太好,所以我们可以用opencv提供的跑opencv_traincascade函数来训练一个LBP特征的分类器.(由于open ...

  2. windows 10 更新补丁包

    http://www.catalog.update.microsoft.com/Search.aspx?q=windows%2010%20prohttp://www.catalog.update.mi ...

  3. python2与python3中除法的区别

    python2中的除法 >>>1/2 0 即一个整数(无小数部分的数)被另外一个整数除,计算结果的小数部分被截除了,只留下了整数部分 有时候,这个功能比较有用,譬如在做一些需要取位数 ...

  4. I - The lazy programmer 贪心+优先队列

    来源poj2970 A new web-design studio, called SMART (Simply Masters of ART), employs two people. The fir ...

  5. Solve Error: Unhandled exception at 0x00905a4d in xxx.exe: 0xC0000005: Access violation.

    在使用Visual Studio进行项目开发的时候,有时候会遇到下面这个错误: Unhandled exception at 0x00905a4d in xxx.exe: 0xC0000005: Ac ...

  6. zoj 3871

    貌似这道题某人已经扔给我一个多星期了(雾) 首先要知道这样一点:凸包的面积可以直接用线段的有向面积和求得. 自己口胡的证明:单纯一条线段自身的叉积就是到原点与这条线段构成三角形的面积吧,那么加加减减之 ...

  7. 1. node.js 认识 (一)

    官网: (下载安装nodejs) https://nodejs.org/en/ http://nodejs.cn/ Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环 ...

  8. padding 和 float属性

    padding = {上内,右内,下内,左内} 内边距 padding:"10, 5,15,20" float = "true"  控件固定住.

  9. 剑指offer——python【第29题】最小的K个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路 先排序后取数,排序可以用冒泡,插入,选择,快排,二分法等等, ...

  10. EF Unknown column 'Project1.FamilyMembers_ID' in 'field list'

    产生成的查询语句中有:Project1.FamilyMembers_ID 字段 原因:就是对象主键对象中有一个属性!