unittest没有想testNG那么方便,可以进行参数化,但是有一个第三方库可是实现参数化

安装 pip install parameterized

该库可以在python的所有单元测试框架中使用

具体的使用方法及使用方法可参考官网

https://pypi.python.org/pypi/parameterized

使用方法

对于unittest测试框架,需要使用 @parameterized.expand装饰器

对于nose和py.test测试框架,需要使用 @parameterized装饰器

装饰器可以接受的类型( a list or iterable of tuples or param(...), or a callable which returns a list or iterable

from parameterized import parameterized, param

# A list of tuples

@parameterized([

(2, 3, 5),

(3, 5, 8),

])

def test_add(a, b, expected):

assert_equal(a + b, expected)

# A list of params

@parameterized([

param("10", 10),

param("10", 16, base=16),

])

def test_int(str_val, expected, base=10):

assert_equal(int(str_val, base=base), expected)

# An iterable of params

@parameterized(

param.explicit(*json.loads(line))

for line in open("testcases.jsons")

)

def test_from_json_file(...):

...

# A callable which returns a list of tuples

def load_test_cases():

return [

("test1", ),

("test2", ),

]

@parameterized(load_test_cases)

def test_from_function(name):

@parameterized.expand 可以根据运行情况,自动生成测试方法名,如

import unittest

from parameterized import parameterized

class AddTestCase(unittest.TestCase):

@parameterized.expand([

("2 and 3", 2, 3, 5),

("3 and 5", 2, 3, 5),

])

def test_add(self, _, a, b, expected):

assert_equal(a + b, expected)

运行之后的测试方法名为test_add_0_2_and_3,他将参数中的第一个值添加在测试方法名的后面

测试方法名也可以通过testcase_func_name 参数来自定义,它的值是一个函数,该函数接受三个参数:testcase_funcparam_num, and params, testcase_func表示测试的函数,param_num表示参数列表的索引,params是参数值

import unittest
from parameterized import parameterized
 
def custom_name_func(testcase_func, param_num, param):
    return "%s_%s" %(
        testcase_func.__name__,
        parameterized.to_safe_name("_".join(str(x) for x in param.args)),
    )
 
class AddTestCase(unittest.TestCase):
    @parameterized.expand([
        (2, 3, 5),
        (3, 5, 8),
    ], testcase_func_name=custom_name_func)
    def test_add(self, a, b, expected):
        assert_equal(a + b, expected)

运行之后测试方法名为test_add_1_2_3

parameterized之unittest参数化的更多相关文章

  1. python unittest+parameterized,单元测试框架+参数化

    总要写新的自动化测试模块,在这里把demo记录下来,后面方便自己直接复制粘贴 from nose_parameterized import parameterized import unittest ...

  2. python3 应用 nose_parameterized 实现unittest 参数化

    一.读取变量的值,实现unittest 参数化 import nose_parameterized,unittest def calc(a:int,b:int): return a+b case_da ...

  3. python自动化测试学习笔记-unittest参数化

    做接口测试的时候,当一个参数需要输入多个值的时候,就可以使用参数来实现: python中unittest单元测试,可以使用nose_parameterized来实现: 首先需要安装:pip  inst ...

  4. unittest参数化parameterized

    参考文章: https://www.cnblogs.com/royfans/p/7226360.html https://blog.csdn.net/zha6476003/article/detail ...

  5. Selenium使用parameterized库进行参数化

    在我们做自动化测试的时候参数化是必不可少的,那么要怎么去做参数化呢?咱们来看下unittest+parameterized是怎么实现的 1.https://github.com/wolever/par ...

  6. Python unittest 参数化

    准备工作: pip install  nose_parameterized 典型场景:用户名.密码参数化 实例 1,新建一个ftl.py 文件 ,用来将存在于.txt .xlsx 文件中的参数化数据转 ...

  7. 【转载】unittest参数化(paramunittest)

    前言 paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例 前面讲数据驱动的时候,用ddt可以解决多组数据传入,自动生成多个测试用例.本篇继续介绍 ...

  8. unittest参数化

    我们在写case的时候,如果用例的操作是一样的,就是参数不同,比如说要测一个登陆的接口,要测正常登陆的.黑名单用户登陆的.账号密码错误的等等,在unittest里面就要写多个case来测试. 这样的情 ...

  9. selenium,unittest——参数化url,并多线程加快脚本运行速度

    利用参数化连续打开网页: #encoding=utf-8import unittestimport paramunittestimport timefrom selenium import webdr ...

随机推荐

  1. django使用session报错:no such table: django_session

    Django版本:1.11.15 使用session的代码:request.session['key'] = value 运行后报错:no such table: django_session 解决办 ...

  2. Redis set数据结构

    set里的数据不能重复 1. 增加set1,值为 a b c d 1 2 3 2. 返回集合元素的数量 3. 重命名set1为set100 4. 查看集合中的成员 5.sdiff set100 set ...

  3. NET设计模式 第二部分 结构性模式(10):组合模式(Composite Pattern)

    组合模式(Composite Pattern) ——.NET设计模式系列之十一 Terrylee,2006年3月 概述 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复 ...

  4. Git-配置difftool和mergetool

    git自带的difftool和mergetool使用不习惯,配置difftool和mergetool为Beyond Compare 3. git的配置文件一般在C:\Users\用户名\.gitcon ...

  5. newifi mini将led指示灯引出当gpio使用

    之前买了个newifi mini的路由器,CPU是mt7620a的,有7个led指示灯.现在想要把控制led灯的gpio引出来,方便其他驱动或应用的开发. 一.硬件部分 1.联想路由 现在想要把USB ...

  6. 阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide

    阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide 说明:本文档自带测试工程: DE_ALTSHIFT_TAPS.zip 1.支 ...

  7. STL序列式容器学习总结

    STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html L ...

  8. CAD 中绘制点

    首先开启点样式,否则点是看不到的 系统变量 PDMODE 和 PDSIZE 控制点对象的显示外观. PDMODE 取值为 0.2.3 .4 时指定表示点的图形,取值为 1 表示不显示任何图形,如下图所 ...

  9. SET NOCOUNT ON

    每次我们在使用查询分析器调试SQL语句的时候,通常会看到一些信息,提醒我们当前有多少个行受到了影响,这是些什么信息?在我们调用的时候这些信息有用吗?是否可以关闭呢? 答案是这些信息在我们的客户端的应用 ...

  10. 以zookeeper为注册中心搭建spring cloud环境

    在spring cloud体系中,有多种手段实现注册中心,本例中采用zookeeper作为注册中心的角色.服务提供者向zookeeper注册,服务消费者从zookeeper中发现服务提供者的相关信息, ...