Pea*_*ful 21 python fixtures pytest python-3.x
我已经在文件中编写了测试类,并且尝试使用pytest 固定装置,这样我就不必在每个测试函数中创建相同的输入数据。下面是最小的工作示例。
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")
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 pytest-3 对此进行测试时,出现以下错误:
类型错误:test_add_two() 缺少 1 个必需的位置参数:'base_value'
这让我感到困惑,因为 base_value 明确作为 的参数之一给出test_add_two。非常感谢任何帮助。
Guy*_*Guy 33
这是因为你正在混合pytest和unittest。尝试
@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"
Run Code Online (Sandbox Code Playgroud)
如果失败,错误将是
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
Run Code Online (Sandbox Code Playgroud)
但是 pytest 和 unittest 不兼容吗?
仅在有限的基础上。来自Pytest unittest.TestCase 支持
unittest.TestCase 子类中的 pytest 功能 以下 pytest 功能在 unittest.TestCase 子类中工作:
- 标记:skip、skipif、xfail;
- 汽车用固定装置;
以下 pytest 功能不起作用,并且由于设计理念不同,可能永远不会起作用:
- 固定装置(自动使用固定装置除外,见下文);
- 参数化;
- 定制挂钩;
第三方插件可能会或可能不会正常工作,具体取决于插件和测试套件。