Ami*_* K. 5 python self pytest web-api-testing python-3.6
我已参数化我的装置来调用 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'
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个时,我无法将传递给固定装置的请求参数读取到测试中。还尝试保存在实例变量中,但没有成功。我观察到固定装置中和测试中id()的属性是不同的。为什么会这样呢?有办法实现这一点吗?selfself
您可以将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')
Run Code Online (Sandbox Code Playgroud)
由于您正在参数化夹具,因此request.param仅在定义参数化的夹具功能中可用。
另一种可能性是引入另一个参数化的夹具并返回参数。当前的夹具和测试函数使用这个新的夹具来获取参数。
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21814 次 |
| 最近记录: |