если есть, я могу заменить 3 статические функции как pytest.fixture? так что я могу передать аргумент из тестового случая в фиксатор customer_preset, а затем в другой фиксатор setup_customer_name
, setup_customer_address
, setup_customer_number
?
моя тестовая последовательность равна
1: run testcase, pass argument as list.
2: parse argument one by one and pass each argument to each function like `setup_customer_name`, `setup_customer_address`, `setup_customer_number`
3:return the query result from each function back to testcase
, и у меня есть следующий код
Я знаю, что есть другой способ, которым я могу просто передать аргумент из тестового примера и сделать setup_customer_name
, setup_customer_address
, setup_customer_number
в качестве устройства, косвенного для устройства. но только на основе моего кода теперь я не могу этого сделать
import pytest
class TestCustomer:
@pytest.mark.parametrize('customer_preset',
[dict(name='apple', addr='apple_address', number='apple_number'),
dict(name='google', addr='google_address', number='google_number'),
dict(name='amazon', addr='amazon_address', number='amazon_number')],
indirect=['customer_preset'])
def test_customer(self, customer_preset):
print(customer_preset)
pass
class TestPreset:
@pytest.fixture(scope="function")
def customer_preset(self, request):
"""
"""
name = self.setup_customer_name(request.param.get('name'))
addr = self.setup_customer_address(request.get('addr'))
number = self.setup_customer_number(request.get('number'))
return name, addr, number
def setup_customer_name(self, name):
#do some pre set query number name
return
def setup_customer_address(self, address):
#do some pre set addr
return
def setup_customer_number(self, number):
#do some pre set number
return