gpt4 book ai didi

python - 测试 : parametrize test cases from classes

转载 作者:太空狗 更新时间:2023-10-29 17:06:45 24 4
gpt4 key购买 nike

我目前正在关注这个 py.test示例,当我不使用类时它会成功,但是当我将测试用例引入类时我失败了。

我设法编写的最小案例如下:

import unittest

import pytest

class FixtureTestCase(unittest.TestCase):

@pytest.mark.parametrize("test_input,expected", [
("3+5", 8),
("2+4", 6),
("6*9", 42),
])
def test_1(self, a, b):
self.assertEqual(a, b)

不幸的是当我执行

  py.test  test_suite.py

我收到错误信息:

  TypeError: test_1() takes exactly 3 arguments (1 given)

我该怎么做才能生成一组 test_1 测试?

最佳答案

如果您从 unittest.TestCase 继承,您的测试方法不能有额外的参数。如果您只是从 object 继承子类,它将起作用(尽管您必须使用常规的 assert 语句而不是 TestCase.assertEqual 方法。

import unittest

import pytest

class TestCase(object):

@pytest.mark.parametrize("test_input,expected", [
("3+5", 8),
("2+4", 6),
("6*9", 42),
])
def test_1(self, a, b):
assert eval(a) == b

虽然在这一点上,它有点回避了为什么您要使用类而不是仅仅定义函数的问题,因为测试本质上是相同的,但需要更少的整体样板和代码。

关于python - 测试 : parametrize test cases from classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com