Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试所有类型的python函数_Python_Function_Testing_Pytest - Fatal编程技术网

测试所有类型的python函数

测试所有类型的python函数,python,function,testing,pytest,Python,Function,Testing,Pytest,大家好,我是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',

大家好,我是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'

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

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

def create(name1,name2,ext=“.jpg”):
如果名称2:
返回“%s.%s%s%”(名称1,名称2,分机)
其他:
返回“%s%s”%(名称1,分机)
@pytest.mark.parametize(
“名称1,名称2,预期结果”,
[
(“ff0c5”、“ddmn6”、“ff0c5.ddmn6.jpg”),
(“ff0c5”,无,“ff0c5.jpg”),
(“ff0c5”,假,“ff0c5.jpg”),
(“ff0c5”,0,“ff0c5.jpg”),
],
)
def测试创建(名称1、名称2、预期结果):
断言创建(name1,name2)=预期结果
我不知道你说的是什么意思:

我也可以在这里使用正确或错误的陈述

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

希望这有帮助

错误很明显:
create
函数有两个必需的参数(
name1
name2
),但您只提供一个。您需要为
name2
提供一个参数,或者将其更改为关键字参数,但我如何提到该部分使用name2或不使用@Dan您如何使用
ff0c5.ddmn6.jpg
的输入调用
create
?您的函数似乎无法正确处理此问题,因为将添加两个扩展名
.jpg
,我将对其进行更改,但在pytest.marked.parametrize中,我需要给出两个参数@丹尼,我想我有很多错误。