一、如何单独运行某条用例
在参数化测试中总有些用例失败,由于前后置数据的关系需要单独运行那条用例如何运行呢
- 方法一:直接查看控制台运行用例 确定是
[2-case_data8]
python
pytest.main(["-sv",
"testcase/违规告警/test_违规告警_非合同车.py::TestIllegalAlarmNonContract::test_illegal_alarm_non_contract_009[2-case_data8]"])
- 方法二 查看allure报告
Parameters
根据Parameters
进行拼接2-case_data4
注意 不要使用allure.dynamic.title(case_data["title"])
或者@allure.title()
二、参数化需要可迭代对象
参数化有点像for i in case_data
其中i
为实际的用例参数
这就是yaml
对象中为何会写step01:
让其转dict
时变为一个列表
三、多个参数化使用时注意参数形式
python
@pytest.mark.parametrize("case_data", pd.get_yaml_single_case_data(filename9, api_name)) # [{},{},]
@pytest.mark.parametrize("alarm_type", [2])
同一测试函数存在case_data
,alarm_type
两个参数化,他们之间是存在组合关系的,组合方式就是笛卡尔积,我想要保证alarm_type
每次传2,3
两个参数,参数需要写为[(2,3)]
python
@pytest.mark.parametrize("alarm_type", [(2,3)])
这就是参数化有点像for i in case_data
具体应用,保证i
是我们想要的数据,若写成@pytest.mark.parametrize("alarm_type", [2,3])
形成的参数化将为[2-case_data],[3-case_data]
分别进行组合