在上一篇文章中聊到了fixture的一些用法,利用params和ids这2个参数来实现对于测试数据初始的一些需求。
把苹果咬哭:【pytest】(十)fixture参数化-巧用params和ids优雅的创建测试数据zhuanlan.zhihu.com但是文中的示例代码并不是真正的接口测试,只是用了一些print描述了下我的设想,以及一定的验证,缺乏实际应用。
刚好最近抽空在写一些接口自动化,正好拿一个接口实践下。
这个接口是一个列表接口,根据status
的传参,可以返回对应状态的数据,其中:待处理-10,处理中-20,已完成-30
。
代码部分的话 就分2部分贴出来吧。
一、fixture
先看代码
import pytest
from faker import Faker
from util.mysql_operating import DB
fake = Faker()
def init_data(fixture_value):
if fixture_value == 10:
return "untreated"
elif fixture_value == 20:
return "processing"
elif fixture_value == 30:
return "done"
@pytest.fixture(params=[10, 20, 30], ids=init_data)
def init_data_query_by_status(request):
status = request.param
print("fixture 参数", status)
uid = fake.pyint(min_value=10086, max_value=99999, step=1)
order_sn = "CK" + fake.pystr(min_chars=19, max_chars=19)
real_sql = """INSERT INTO `tcwms`.`sm_outbound_order`(`id`, `out_id`, `order_sn`, `admin_id`, `admin_name`, `total_price`,
`remark`, `status`, `type`, `use_type`, `mchid`, `wh_id`, `add_time`, `update_time`, `out_time`, `to_id`, `to_name`
, `verify_status`, `verify_time`, `verify_ad_id`, `verify_ad_name`, `posting_status`, `posting_time`,
`posting_ad_id`, `posting_ad_name`, `is_valid`, `finance_verify_status`, `finance_verify_time`, `finance_verify_remarks`,
`finance_verify_ad_id`, `finance_verify_ad_name`, `pay_status`)
VALUES ({}, 1752, '{}', 572, ''