首页 > 解决方案 > 测试所有类型的python函数

问题描述

大家好,我是python的初学者,我想测试我的功能。但我有错误。

我也可以在这里使用真假陈述吗?

def create(name1, name2, ext='.jpg'):
    if name2:
        return '%s.%s%s' % (name1, name2, ext)
    else:
        return '%s%s' % (name1, ext)

@pytest.mark.parametrize('input, expected_result',
                         [('ff0c5.ddmn6.jpg', 'ff0c5.ddmn6.jpg'),
                          ('ff0c5.ddmn6', 'ff0c5.ddmn6.jpg'),
                          ('ff0c5.jpg', 'ff0c5.jpg')]
                         )
def test_create(input, expected_result):
    assert create(input)  is expected_result

我得到了这个错误。所以我需要他们都通过。

def test_create(input, expected_result):
>       assert create(input)  is expected_result
E       TypeError: create() missing 1 required positional argument: 'name2'

标签: pythonfunctiontestingpytest

解决方案


在您的示例name2中,参数必须始终传递给函数。您的测试失败,因为您只将两个参数之一传递给您的函数。

要测试这两个逻辑流程,您必须传递一个name2等于True(下面的第一个测试)和False(底部三个测试)的变量,这实际上取决于您希望函数在应用程序中的使用方式

def create(name1, name2, ext=".jpg"):
    if name2:
        return "%s.%s%s" % (name1, name2, ext)
    else:
        return "%s%s" % (name1, ext)


@pytest.mark.parametrize(
    "name1, name2, expected_result",
    [
        ("ff0c5", "ddmn6", "ff0c5.ddmn6.jpg"),
        ("ff0c5", None, "ff0c5.jpg"),
        ("ff0c5", False, "ff0c5.jpg"),
        ("ff0c5", 0, "ff0c5.jpg"),
    ],
)
def test_create(name1, name2, expected_result):
    assert create(name1, name2) == expected_result

我不知道你的意思是:

我也可以在这里使用真假陈述吗?

希望这有帮助!


推荐阅读