gpt4 book ai didi

python - pytest 请求测试中使用的 fixture 参数

转载 作者:行者123 更新时间:2023-12-01 07:08:57 31 4
gpt4 key购买 nike

我已参数化我的装置来调用 API,每次调用时使用不同的输入数据来发送请求,范围为 class。因为我需要检查 API 响应与发送的数据。我需要将灯具的请求参数读取到测试中。

class Test_create_fixture():

@pytest.fixture(scope="class", params=[0, 1])
def my_fixture(self, request):
"Call incident creation api."

# POST request to API using params value in request data, get data from API
my_data = {'abc': 123, 'severity': 0} # this data is from API

self.data = {'severity': request.param}

return my_data

def test_incident_severity(self, my_fixture, request):
print("self.data", self.data) # 'Test_create_fixture' object has no attribute 'data'
assert my_fixture.get('severity', False) == request.param # AttributeError: 'FixtureRequest' object has no attribute 'param'

但是当我运行这个时,我无法将传递给固定装置的请求参数读取到测试中。还尝试保存在实例变量中,但没有成功。我观察到固定装置中的 self 和测试中的 selfid() 属性是不同的。为什么会这样呢?有办法实现吗?

最佳答案

您可以将 request.param 从装置传递到测试函数。您可以将其添加到 my_data 对象本身。

class Test_create_fixture():

@pytest.fixture(scope="class", params=[0, 1])
def my_fixture(self, request):
"Call incident creation api."

# POST request to API using params value in request data, get data from API
my_data = {'abc': 123, 'severity': 0, 'req_param': request.param} # this data is from API

return my_data

def test_incident_severity(self, my_fixture):
assert my_fixture.get('severity', False) == my_fixture.get('req_param')
<小时/>

更新:

由于您正在参数化 fixture ,因此 request.param 仅在定义参数化的 fixture 函数中可用。

另一种可能性是引入另一个参数化的 fixture 并返回参数。当前的 fixture 和测试函数使用这个新的 fixture 来获取参数。

class Test_create_fixture():

@pytest.fixture(scope="class", params=[0,1])
def req_param(self, request):
return request.param

@pytest.fixture(scope="class")
def my_fixture(self, req_param):
"Call incident creation api."

# POST request to API using req_param in request data, get data from API
my_data = {'abc': 123, 'severity': 0} # this data is from API

return my_data

def test_incident_severity(self, my_fixture, req_param):
assert my_fixture.get('severity', False) == req_param

关于python - pytest 请求测试中使用的 fixture 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58319619/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com