【Python】nose_parameterized使unitTest支持参数化

nose_parameterized使unitTest支持参数化

GIThttps://github.com/wolever/nose-parameterized

  • And @parameterized.expand can be used to generate test methods in situations where test generators cannot be used (for example, when the test class is a subclass of unittest.TestCase):
  • 使用unittest执行case
#nose_parameterized_demo
import unittest
from nose_parameterized import parameterized

class TestMathUnitTest(unittest.TestCase):

    @parameterized.expand([
        ("1st", 4, 5),
        ("2en", 2, 4),
        ("3rd", 3, 4),
    ])
    def test_floor(self, name, source, expected):
        self.assertEqual(source + 1, expected)

运行结果

D:\workspace\pyUnitTest\src>python -m unittest -v nose_parameterized_demo
test_floor_0_1st (nose_parameterized_demo.TestMathUnitTest) ... ok
test_floor_1_2en (nose_parameterized_demo.TestMathUnitTest) ... FAIL
test_floor_2_3rd (nose_parameterized_demo.TestMathUnitTest) ... ok

======================================================================
FAIL: test_floor_1_2en (nose_parameterized_demo.TestMathUnitTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\nose_parameterized-0.5.0-py2.7.egg\nose_parameterized\parameterized.py",
  line 365, in standalone_func
    return func(*(a + p.args), **p.kwargs)
  File "nose_parameterized_demo.py", line 13, in test_floor
    self.assertEqual(source + 1, expected)
AssertionError: 3 != 4

----------------------------------------------------------------------
Ran 3 tests in 0.029s

FAILED (failures=1)

D:\workspace\pyUnitTest\src>
  • @parameterized.expand 通过变量引用参数化数据
  • @parameterized.expand(input=params)附带的变量名称需为input
#nose_parameterized_demo
import unittest
from nose_parameterized import parameterized

class TestMathUnitTest(unittest.TestCase):

    params = [
        ("1st", 4, 5),
        ("2en", 2, 4),
        ("3rd", 3, 4),
    ]

    @parameterized.expand(input=params)
    def test_floor(self, name, source, expected):
        self.assertEqual(source + 1, expected)
  • The @parameterized decorator can be used test class methods, and standalone functions:
  • 使用nosetest执行case
from nose.tools import assert_equal
from nose_parameterized import parameterized

import unittest
import math

@parameterized([
    (2, 2, 4),
    (2, 3, 8),
    (1, 9, 1),
    (0, 9, 0),
])
def test_pow(base, exponent, expected):
    assert_equal(math.pow(base, exponent), expected)

执行结果

D:\workspace\pyUnitTest\src> nosetests -v t1.py
t1.test_pow(2, 2, 4) ... ok
t1.test_pow(2, 3, 8) ... ok
t1.test_pow(1, 9, 1) ... ok
t1.test_pow(0, 9, 0) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.025s

OK
时间: 2024-10-05 00:38:44

【Python】nose_parameterized使unitTest支持参数化的相关文章

Python单元测试框架unittest之深入学习

前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图(下面的类图以及解释均来源于网络,原文链接): 一个TestCase的实例就是一个测试用例.什么是测试用例呢?就是一个完整的测试流程,包括测

使类支持比较操作

Python的基础数据类型大多支持比较操作,如 >=, ==, <=等.类对象默认不支持对象间比较操作,除非实现相应的__le__, __eq__, __le__方法等. Python类可以通过为每个比较运算符实现一个特殊的方法来支持比较. 例如,要支持>=运算符,请在类中定义__ge __()方法. 尽管定义单个方法通常没有问题,但是创建每个可能的比较运算符的实现很快变得很繁琐. Python模块functools提供了total_ordering类装饰器方法,可用于简化此过程. 要使

PIE使IE支持CSS3圆角盒阴影与渐变渲染

PIE使IE支持CSS3圆角盒阴影与渐变渲染 http://css3pie.com/download/

配置 squid 使其支持 访问https站点

需求:让用户通过squid访问https网站 注意和配置squid使其支持https不同 网上的资料基本都是给squid配置一个证书,但直觉告诉我这并不能解决我们的问题 进入正题,通过之前配置好的squid访问http站点可以正常访问, 但无法访问https开头的网站 查找问题最好的方法就是分析日志 access.log中发现如下信息 NONE/400 4280CONNECT error:method-not-allowed - NONE/- text/html 查看 squid.conf ,默

如何配置IIS使其支持APK文件的下载

如何配置IIS使其支持APK文件的下载APK文件是安卓的安装程序的文件,IIS里的MIME里默认是不支持的.如果没有配置MIME时,直接输入网址要下载APK文件时,会提示找不到此文件.这里教你如何配置IIS的MIME设置,使其可以支持APK文件的下载.1.在管理工具里打开Internet 信息服务(IIS)管理器.然后选择需要配置的网站.2.右侧的界面中会显示该网站的所有功能配置,我们选择并点击进入“MIME类型”3.在右侧的操作区选择点击“添加”MIME.4.在弹出的添加窗口里的文件扩展名输入

使IE支持placeholder

Html5的表单添加了许多给力的属性,其中输入框的placeholder便是很赞的属性!现代浏览器大多都支持这个属性,但IE8....好吧,前端的童鞋们总会想出各种姿势对付IE的~_~ //使IE支持placeholder if( !('placeholder' in document.createElement('input')) ){ $('input[placeholder]').each(function(){ var that = $(this), text= that.attr('p

MSTest不支持参数化测试的解决方案

之前的项目中做单元测试一直用的是NUnit,这次做新项目,负责人要求统一用MsTest,理由是MsTest是Visual Studio内置的.用就用吧,我没什么意见.不过用了两天,我就发现一个大问题:MsTest并不支持参数化测试(也有叫行测试的). 什么是参数化测试?简单的说,就是同样的逻辑,根据输入参数不同给出不同的结果.因为只是参数不同,所以并不希望把测试写多遍,但是又希望对每个参数的测试成为一个独立的测试用例.举例说,假定我有一个数学计算的方法是把数字*2,我希望证明这个方法对于正数.负

Linux下安装libiconv使php支持iconv函数

libiconv组件安装好了可以让我们php支持iconv函数了,这个函数的作用就是字符编码强制转换了,下面和111cn小编一起来看一个Linux中安装libiconv使php支持iconv函数的例子吧. 问题: 线上运行的lamp服务器,php不支持iconv函数. 解决方法: 安装libiconv,重新编译apache,使php支持iconv函数,实现utf-8和gb2312编码的转换. 具体步骤: 1.下载libiconv cd /usr/local/src wget http://ftp

配置apache使之支持浏览器端的缓存

当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求. 一.适用直接访问,非F5刷新页面的情况下 Expires是HTTP/1.0的缓存头, Cache-Control: max-age 是HTTP/1.1是用来进行HTTP缓存的头.Expires指定了资源过期的绝对时间,GMT格式,Cache-Control: max-age指定了资源过期的相对时间,单