@ddt
class Test_searchProd:
@data(['clothes': 3],['shoes': 4])
@unpack
def test_searchAllProduct(setup,productType):
.....
基本上,设置夹具是为了打开特定的URL……我是否做错了什么或者@ddt不能与py.test一起使用?
@ddt
class Test_searchProd:
@data(['clothes': 3],['shoes': 4])
@unpack
def test_searchAllProduct(setup,productType):
.....
基本上,设置夹具是为了打开特定的URL……我是否做错了什么或者@ddt不能与py.test一起使用?
ddt旨在由TestCase
子类使用,因此它不适用于裸测试类。但请注意,pytest可以运行使用ddt
的TestCase
子类,所以如果您已经有一个基于ddt的测试套件,它应该可以使用pytest runner而无需修改。
还要注意,pytest有parametrize,它可以用来替换ddt
支持的许多用例。
例如,以下是基于ddt的测试:
@ddt
class FooTestCase(unittest.TestCase):
@data(1, -3, 2, 0)
def test_not_larger_than_two(self, value):
self.assertFalse(larger_than_two(value))
@data(annotated(2, 1), annotated(10, 5))
def test_greater(self, value):
a, b = value
self.assertGreater(a, b)
在pytest中使用fixture:
class FooTest:
@pytest.mark.parametrize('value', (1, -3, 2, 0))
def test_not_larger_than_two(self, value):
assert not larger_than_two(value)
@pytest.mark.parametrize('a, b', [(2, 1), (10, 5)])
def test_greater(self, a, b):
assert a > b
如果你喜欢的话,甚至可以完全去掉这个类:
@pytest.mark.parametrize('value', (1, -3, 2, 0))
def test_not_larger_than_two(value):
assert not larger_than_two(value)
@pytest.mark.parametrize('a, b', [(2, 1), (10, 5)])
def test_greater(a, b):
assert a > b