我一直在尝试将参数化@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)
但参数化的东西并没有踢进:
TypeError: test_default_values() takes exactly 3 arguments (1 given)
我已经改用基于简单类的测试(没有单元测试)。但是我想知道是否有人尝试过它并且有效。
答案 0 :(得分:27)
unittest.TestCase 方法无法直接接收fixture功能 作为实施的论据可能会对其产生影响 运行一般的 unittest.TestCase 测试套件。
答案 1 :(得分:3)
有一个简单的解决方法,可以使用“参数化”参数化基于单元测试的Python测试:https://pypi.org/project/parameterized/
这是一个简单的例子。首先安装“参数化”:pip install parameterized==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
我已成功使用此技术对使用SeleniumBase的GitHub上的this example框架的硒浏览器测试进行参数化。