Python pytest参数化测试与基于unittest类的测试一起工作吗?
我一直在尝试将参数化Python pytest参数化测试与基于unittest类的测试一起工作吗?,python,unit-testing,pytest,Python,Unit Testing,Pytest,我一直在尝试将参数化@pytest.mark.parametrize测试添加到基于类的单元测试中 class SomethingTests(unittest.TestCase): @pytest.mark.parametrize(('one', 'two'), [ (1, 2), (2, 3)]) def test_default_values(self, one, two): assert one == (two + 1) 但是参数化的东西没有
@pytest.mark.parametrize
测试添加到基于类的单元测试中
class SomethingTests(unittest.TestCase):
@pytest.mark.parametrize(('one', 'two'), [
(1, 2), (2, 3)])
def test_default_values(self, one, two):
assert one == (two + 1)
但是参数化的东西没有起作用:
我已经切换到简单的基于类的测试(没有unittest)。但我想知道是否有人尝试过,它是否有效。根据:
unittest.TestCase方法不能直接接收fixture函数
可能会对以下能力造成影响的论点:
运行general unittest.TestCase测试套件
有一个简单的解决方法,可以使用“参数化”参数化基于unittest的Python测试: 这里有一个简单的例子。第一次安装“参数化”:
pip安装参数化==0.7.0
import unittest
from parameterized import parameterized
class MyTestClass(unittest.TestCase):
@parameterized.expand([
["One", "Two"],
["Three", "Four"],
["Five", "Six"],
])
def test_parameterized(self, arg1, arg2):
print(arg1, arg2)
现在,您可以使用pytest
我已成功地使用此技术将使用GitHub上框架的selenium浏览器测试参数化。请注意,要使用mock,您应该在@Parameterized后面进行修饰,并且应该在args列表的末尾“收集”mock(
arg3
maybe)。我刚试过。
import unittest
from parameterized import parameterized
class MyTestClass(unittest.TestCase):
@parameterized.expand([
["One", "Two"],
["Three", "Four"],
["Five", "Six"],
])
def test_parameterized(self, arg1, arg2):
print(arg1, arg2)