当我们在使用TestNG时,发现它有一个非常好用的参数化功能。当你的测试用例有固定的参数和断言结果时,它可以相似用例的节省用例的个数。

  例子如下:

import static org.testng.Assert.assertEquals;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* Created by fnngj on 2017/3/19.
*/
public class Demo { // 定义测试数据
@DataProvider(name = "data")
public Object[][] Users() {
return new Object[][] {
{ 1, 1, 2},
{ 2, 2, 5},
{ 3, 3, 6},
};
}
@Test(dataProvider="data")
public void testAdd(int a,int b,int c) {
assertEquals(a + b, c);
}
}

  相对而言,Python下面单元测试框架要弱上少,尤其是Python自带的unittest测试框架,不支持参数化,不支持多线程执行用例,不支持HTML测试报告的生成...。好再,部分不足我们可以通过unittest扩展来满足需求。比如现在要介绍一个参数化的扩展。

  在没有参数化功能的情况下,我们的用例需要这样编写。

import unittest

class TestAdd(unittest.TestCase):

    def test_add_01(self):
self.assertEqual(1 + 2, 3) def test_add_02(self):
self.assertEqual(2 + 2, 5) def test_add_03(self):
self.assertEqual(3 + 3, 6) if __name__ == '__main__':
unittest.main()

  nose-parameterized是一个针对Python单元测试框架实现参数化的扩展。同时支持不同的单元测试框架。

  GitHub地址:https://github.com/wolever/nose-parameterized

  然后,unittest就可以像TestNG一样写用例了。

import unittest
from nose_parameterized import parameterized class TestAdd(unittest.TestCase): @parameterized.expand([
("",1, 1, 2),
("",2, 2, 5),
("",3, 3, 6),
])
def test_add(self, name, a, b, c):
self.assertEqual(a + b, c) if __name__ == '__main__':
unittest.main(verbosity=2)

执行结果:

test_add_0_01 (__main__.TestAdd) ... ok

test_add_1_02 (__main__.TestAdd) ... FAIL

test_add_2_03 (__main__.TestAdd) ... ok

当相同入参和断言结果的用例越多,这种写法用起来越爽!

unittest单元测试框架实现参数化的更多相关文章

  1. 【转】nose-parameterized是Python单元测试框架实现参数化的扩展

    原文地址: http://www.cnblogs.com/fnng/p/6580636.html 相对而言,Python下面单元测试框架要弱上少,尤其是Python自带的unittest测试框架,不支 ...

  2. unittest单元测试框架总结

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  3. unittest单元测试框架详解

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  4. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  5. unittest单元测试框架

    unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...

  6. unittest单元测试框架简单说明

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  7. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  8. unittest单元测试框架总结(转载)

    转载:https://www.cnblogs.com/yufeihlf/p/5707929.html unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该 ...

  9. 四. 引入unittest单元测试框架

    1.   安装 SeleniumIDE(firefox) (1)下载地址:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/ (2 ...

随机推荐

  1. .Net程序员学用Oracle系列(13):合并语句(MERGE)

    - 1.[**语法说明**](#segment1) - 1.1.[UPDATE 和 INSERT 可以只出现一个](#point11) - 1.2.[UPDATE 后面还可以再跟 WHERE](#po ...

  2. (原)SQL Server 系统提供功能的三个疑惑

    本文目录列表: 1.SQL Server系统提供的部分疑惑概述2.系统函数调用时DEFAULT代替可选参数使用不统一3.队列字段列message_enqueue_time记录的是UTC日期时间 4.@ ...

  3. SwingBench---ORACLE压力测试工具

    SwingBench---ORACLE压力测试工具 ◆描述SwingBench是Oracle UK的一个员工在一个被抛弃的项目的基础上开发的.目前稳定版本2.5,基于JDK.该工具是免费的,可以在作者 ...

  4. linux中的软连接和硬连接

    1. 创建软连接的方法 ln -s /path/to/original /path/to/linkName 当我们对软连接文件进行修改后,对应的修改也会反映到原始的文件(反之亦然). 当我们删除软连接 ...

  5. 【异构计算】GPU与CPU

    引言 CPU和GPU都是具有运算能力的芯片.CPU更像“通才”主要指令运算(执行)为重和数值运算,而GPU更像“专才”,主要图形类数值计算为核心.在不同类型的运算方面的速度也就决定了它们的能力.芯片的 ...

  6. BZOJ 3390: [Usaco2004 Dec]Bad Cowtractors牛的报复(最大生成树)

    这很明显就是最大生成树= = CODE: #include<cstdio>#include<iostream>#include<algorithm>#include ...

  7. android学习4——View的长宽问题

    画形状的时间经常会用到点的坐标,这时原点O的位置就非常重要.在像素为1280*720的设备上画一条直线.代码如下所示: import android.app.Activity; import andr ...

  8. [看图说话] 基于Spark UI性能优化与调试——初级篇

    Spark有几种部署的模式,单机版.集群版等等,平时单机版在数据量不大的时候可以跟传统的java程序一样进行断电调试.但是在集群上调试就比较麻烦了...远程断点不太方便,只能通过Log的形式,进行分析 ...

  9. 球谐光照(Spherical Harmonics Lighting)及其应用-应用篇

    上一篇介绍了球谐函数的一些原理和性质,本篇主要介绍如何实现球谐光照,将这种光照应用到实际的场景中去. 我们知道,球谐光照实际上就是将周围的环境光采样成几个系数,然后渲染的时候用这几个系数来对光照进行还 ...

  10. 在ZendStudio中增加新的php模板

    步骤: 找到目录:D:\Program Files\Zend\Zend Studio 12.5.1\plugins , 这要根据自己的安装情况来找,再找到以下文件org.eclipse.php.ui_ ...