【问题标题】:pytest - call a function that generates inputs to fill in inputs for pytest.mark.parametrize for desired number of testspytest - 调用生成输入的函数以填充 pytest.mark.parametrize 的输入以获得所需的测试数量
【发布时间】:2022-01-16 06:26:59
【问题描述】:

我有一个可以为一个测试生成输入的函数,我想随机调用该函数以将输入发送到我的 testing_function @pytest.mark.parametrize

## part that generates inputs needed
import numpy as np

def generate_proper_list():
    return np.random.uniform(low=0.1, high=8.0, size=(np.random.randint(low=1,high=5,size=1)[0],4))

### I would like to run this test for desired number of time, like for 4 tests, 5 tests etc,. 
## by invoking above function to generate inputs for each test.
@pytest.mark.parametrize('rand_nums', <some-thing>)
def test_proper_random(rand_nums)
    payload = {'input':rand_nums}
    response = client.post(..., data=json.dumps(payload).encode('utf-8'),...)
    assert response.status_code == 200

我该怎么做?

【问题讨论】:

标签: python python-3.x unit-testing pytest python-3.8


【解决方案1】:

夹具可用于为您的测试函数提供随机输入数据,然后您想使用参数化来执行函数n 的次数。

import numpy as np

@pytest.fixture
def random_input():
    return np.random.uniform(low=0.1, high=8.0, size=(np.random.randint(low=1,high=5,size=1)[0],4))


@pytest.mark.parametrize("n_times", range(5))
def test_proper_random(n_times, random_input)
    payload = {'input':random_input}
    response = client.post(..., data=json.dumps(payload).encode('utf-8'),...)
    assert response.status == 200

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2017-02-28
    • 2013-11-26
    • 2021-05-24
    相关资源
    最近更新 更多