你如何测试一个可变的、隐含的结果?

How do you test a mutable, implied result?

我有一个函数不 "return" 任何东西,而是依赖于使用其可变性来改变 dictionary/list。 即:

def func(my_list):
    my_list.append(4)

我想使用 pytest 和参数化来测试这个函数:

@pytest.mark.parametrize("input1, result", [
    ([1], [1, 4]),
    ([33, 44], [33,44, 4])
])
def test_mytest(input1, result):
    assert func(input1) == result

问题是,这显然行不通,因为我的函数实际上 "return" my_list。 是否可以使用 pytest 测试 my_list 的值,如果可以,如何测试?

您可以将 list1 的值与调用函数的结果 after 进行比较。

def test_mytest(input1):
    func(input1)
    assert input1 == result

请注意,input1 将在函数调用后修改,现在可以与预期结果进行比较