TypeError:使用pytest fixture时缺少1个必需的位置参数



我已经在一个文件中编写了我的测试类,我正在尝试使用pytest fixture,这样我就不必在每个测试函数中创建相同的输入数据。以下是最简单的工作示例。

import unittest
import pytest
@pytest.fixture
def base_value():
return 5
class Test(unittest.TestCase):
def test_add_two(self, base_value):
result = base_value + 2
self.assertEqual(result, 7, "Result doesn't match")

然而,当我使用pytest-3进行测试时,我得到了以下错误:

TypeError:test_add_tow((缺少1个必需的位置参数:'base_value'

这让我很困惑,因为base_value显然是作为test_add_two的参数之一给出的。非常感谢您的帮助。

这是因为混合了pytestunittest。尝试

@pytest.fixture
def base_value():
return 5

class Test:
def test_add_two(self, base_value):
result = base_value + 2
assert result == 7, "Result doesn't match"

如果出现故障,错误将是

def test_add_two(self, base_value):
result = base_value + 2
>       assert result == 8, "Result doesn't match"
E       AssertionError: Result doesn't match
E       assert 7 == 8

但是pytest与unittest不兼容吗

只是在有限的基础上。来自Pytest unittest。测试用例支持

单元测试中的pytest特性。TestCase子类下面的pytest功能在unittest中工作。测试用例子类:

  • 标记:skip、skipif、xfail
  • 汽车使用固定装置

以下pytest功能不起作用,而且可能永远不会到期不同的设计理念:

  • 固定装置(自动使用固定装置除外,见下文(
  • 参数化
  • 自定义挂钩

第三方插件可能工作良好,也可能不工作良好,具体取决于插件以及测试套件。

最新更新