python参数化_你如何在python中生成动态(参数化)单元测试?

本文介绍了Python 3.4及以上版本的unittest包中subTest上下文管理器的使用方法,并通过实例展示了如何在测试中进行参数化和自定义消息。同时,详细剖析了一段测试代码中出现的失败案例,包括AssertionError和nosetests运行结果。
摘要由CSDN通过智能技术生成

使用unittest(自3.4起)

从Python 3.4开始,标准库unittest包就有了subTest上下文管理器。

查看文档:

例:from unittest import TestCaseparam_list = [('a', 'a'), ('a', 'b'), ('b', 'b')]class TestDemonstrateSubtest(TestCase):

def test_works_as_expected(self):

for p1, p2 in param_list:

with self.subTest():

self.assertEqual(p1, p2)

您还可以指定自定义消息和参数值subTest():with self.subTest(msg="Checking if p1 equals p2", p1=p1, p2=p2):

用鼻子

该鼻测试框架支持此。

示例(下面的代码是包含测试的文件的全部内容):param_list = [('a', 'a'), ('a', 'b'), ('b', 'b')]def test_generator():

for params in param_list:

yield check_em, params[0], params[1]def check_em(a, b):

assert a == b

nosetests命令的输出:> nosetests -v

testgen.test_generator('a', 'a') ... ok

testgen.test_generator('a', 'b') ... FAIL

testgen.test_generator('b', 'b') ... ok======================================================================FAIL: testgen.test_generator('a', 'b')----------------------------------------------------------------------Traceback (most recent call last):

File "/usr/lib/python2.5/site-packages/nose-0.10.1-py2.5.egg/nose/case.py", line 203, in runTest

self.test(*self.arg)

File "testgen.py", line 7, in check_em    assert a == bAssertionError----------------------------------------------------------------------Ran 3 tests in 0.006sFAILED (failures=1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值