首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:在使用pytest夹具时缺少一个必需的位置参数

TypeError:在使用pytest夹具时缺少一个必需的位置参数
EN

Stack Overflow用户
提问于 2021-07-19 11:34:39
回答 1查看 5.6K关注 0票数 13

我已经在一个文件中编写了我的测试类,并且我试图使用最热固定装置,这样我就不必在每个测试函数中创建相同的输入数据。下面是最小的工作示例。

代码语言:javascript
复制
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_two()缺少一个必需的位置参数:'base_value‘

这让我感到困惑,因为base_value显然是作为test_add_two的一个参数给出的。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-19 11:41:54

这是因为您将pytestunittest混合在一起。试一试

代码语言:javascript
复制
@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"

如果失败的话,错误将是

代码语言:javascript
复制
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.TestCase支持

unittest.TestCase子类中的pytest特性以下pytest特性在unittest.TestCase子类中工作:

  • 标记:跳过、跳过、不及格;
  • 汽车使用夹具;

下面的pytest特性不起作用,而且可能永远不会因为不同的设计理念而起作用:

  • 固定装置(除自动装置外,见下文);
  • 参数化;
  • 定制钩子;

第三方插件可能运行良好,也可能不正常,这取决于插件和测试套件。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68439799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档