如何从 pytest 函数(monekypath)中获取数据

How to take data from a pytest function(monekypath)

我开发了一个包含很多功能的程序。我现在正在测试这些功能。为此,我需要使用 monkeypath 方法,因为测试的函数调用输入。

因为测试函数需要获取之前测试的数据,使用monkeypath函数时遇到了困难

data_to_test_1 = test_load_sample() # I take the data from the previous test here

# SECOND TEST
def test_take_sample(monkeypatch):
    '''
    take_sample() requests the name of the column
    and take that input to split the data in new columns
    This can be tested by checking some ofthe first values of that
    columns (GT:AD:DP:GQ:PL)
    monkeypatch simulate the input of the user
    '''
    monkeypatch.setattr('builtins.input', lambda _: "373978487") # The 9th sample in the file
    data_to_test_2 = take_sample(data_to_test_1,NAME_FILE_1)
    return data_to_test_2
    assert data_to_test_2["GT"] == "0/1"     # What I test
    assert data_to_test_2["AD"] == "28,46"
    assert data_to_test_2["DP"] == "74:99"


# Now, I want the output of the test_take_sample()
data_to_test_3 = test_take_sample() 

def test_filter_1():
   ... # this function will use data_to_test_3

我对之前的函数采用了相同的方法,将数据从一个测试连接到下一个测试,但这涉及到我得到的 monkeypath 东西

test_take_sample() missing 1 required positional argument: 'monkeypatch'

对于第一种情况,我认为函数test_load_sample()不需要参数。所以你分配'data_to_test_1'关于函数'test_load_sample()'

的值

如果你 data_to_test_1 = test_load_sample() data_to_test_1 收到 return 的值 test_load_sample() 本身没有运行

我认为您认为您正在为 data_to_test_1 分配函数,但事实并非如此。您只需分配函数的值。

如果您想将函数分配给某个变量,请使用 'class' 类型

我已经解决了这个问题

data_to_test_2,Name_sample = take_sample(data_to_test_1,NAME_FILE_1)

我已经跳过测试 test_take_sample() 并且我刚刚 运行 函数 take_sample。这问了我输入,我介绍了在测试 运行 时添加 -s 的输入,如下所示:pythest test_1.py -s