- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 python 单元测试。在 setupClass 方法中,我执行了一些耗时的任务......测试本身运行得非常快。现在我想用多组参数运行同一个测试用例。我怎样才能做到这一点?
我已经尝试过使用 nose_parameterized 等的不同方法,但我不能使用 @parameterized.expand()
import unittest
from nose_parameterized import parameterized
parameters = [('test1', 2 ),('test2', 3)]
class TestParameterizedTestcase(unittest.TestCase):
@classmethod
def setUpClass(cls, param=1):
"""
Do some expensive stuff
"""
cls.param = param
print 'Param in setup class %s'
def test_is_one(self):
"""
A fast test
"""
self.assertEqual(1,self.param)
def test_is_two(self):
"""
Another fast test
"""
self.assertEqual(2, self.param)
def test_is_three(self):
"""
Another fast test
"""
self.assertEqual(3, self.param)
最佳答案
不幸的是,没有任何方法可以使用 unittest
、nose
或 parameterized
创建参数化测试类。
py.test
有一个示例,展示了如何构建自己的参数化测试类,此处:https://pytest.org/latest/example/parametrize.html#a-quick-port-of-testscenarios
您可以像这样构建自己的参数化类生成器:
class MyTestClassBase(object):
# Inherit from `object` so unittest doesn't think these are tests which
# should be run
@classmethod
def setUpClass(cls):
print "doing expensive setup with", cls.param
def test_one(self):
self.assertEqual(self.param, 1)
params = [('test1', 1), ('test2', 2)]
for name, param in params:
cls_name = "TestMyTestClass_%s" %(name, )
globals()[cls_name] = type(cls_name, (MyTestClassBase, unittest.TestCase), {
"param": param,
})
这将为每个参数生成一个新的测试类。
关于Python 测试如何运行参数化测试用例并将参数传递给 setupClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773976/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!