我有以下图片作为测试用例
] 1
使用行为时,我们正在编写这样的场景
Given When user is logged in to the platform
When user opens the settings window
Then user should see the following values
| Field | Value |
| Currency | Reported currency |
| Conversion Method | MI recommended |
| Magnitude | Millions (6) |
| Display Null Value As | SOA_Null |
| Function Options | Excluded from export |
| Dynamic Field Labels | Excluded from export |
我们现在正在迁移到Pytest-BDD,而不是行为。但是我在Pytest中找不到上述案例的支持。我浏览了Pytest-BDD文档,他们对方案大纲的支持。
https://pytest-bdd.readthedocs.io/en/latest/
但是我的情况不是方案大纲,因为我只需要运行一次该方案,而不必遍历上面提到的字段-值对
我也调查了github,发现最接近的是github,但这似乎尚未获得批准。
https://github.com/pytest-dev/pytest-bdd/pull/180
Pytest是否以任何方式支持上述方案的实现?是否有解决方法,即使不是直接的方法,也可以解决?
答案 0 :(得分:1)
希望这对您有帮助...
然后响应应具有以下属性:
| attr |
| id |
| activityId |
| activityName |
| activityType |
| processDefinitionId |
| processDefinitionUrl |
| processInstanceId |
| processInstanceUrl |
| executionId |
| taskId |
| calledProcessInstanceId |
| assignee |
| startTime |
| endTime |
| durationInMillis |
| tenantId |
Then verify response attribute values:
|attr | attr_value | path |
|activityId | endProcessSubmit | data[0].activityId |
|activityType | endEvent | data[0].activityType |
@then(parsers.parse('响应应具有以下属性:\ n {attr_table}'))
def verify_response_attributes(datatable,attr_table,query_historic_activity_instances): query_data = query_historic_activity_instances.json()['数据'] BaseTest.verify_tbl_attr(attr_table,query_data)
@then(parsers.parse('验证响应属性值:\ n {attr_value_table}'))
def verify_response_attribute_values(数据表,attr_value_table,query_historic_activity_instances): query_data = query_historic_activity_instances.json() BaseTest.verify_tbl_attr_values(attr_value_table,query_data)
@staticmethod def verify_tbl_attr_values(table_with_header,query_data): #datatable = parse_str_table(attr_value_table) list_attr = BaseTest.get_tbl_attr_values(table_with_header) #范围内的行(len(datatable.rows)): #attr = list(datatable.rows [row] .values())[0] #attr_val = list(datatable.rows [row] .values())[1] #path = list(datatable.rows [row] .values())[2] 对于我在范围内(len(list_attr)): attr = list_attr [i] [0] attr_val = list_attr [i] [1] 路径= list_attr [i] [2] 用于parse(path).find(query_data)中的匹配: assert attr_val == match.value,“%s Dint匹配的预期%s和实际%s”%( attr_val,match.value,attr)
@staticmethod
def get_tbl_attr_values(table_with_header):
datatable = parse_str_table(table_with_header)
list_attr_val = []
for row in range(len(datatable.rows)):
list_attr_val.append(list(datatable.rows[row].values()))
return list_attr_val
@staticmethod
def verify_tbl_attr(table_with_header,query_data):
list_attr = BaseTest.get_tbl_attr(table_with_header)
for i in range(len(query_data)):
for j in range(len(list_attr)):
assert list_attr[j] in query_data[i],"Response don't have %s" % list_attr[j]
@staticmethod
def get_tbl_attr(table_with_header):
datatable = parse_str_table(table_with_header)
list_attr = []
for row in datatable.rows:
for item in row:
list_attr.append(row[item])
return (list_attr)
@staticmethod
def verify_tbl_attr_by_column(table_with_header):
datatable = parse_str_table(table_with_header)
list_attr = []
for column in datatable.columns.values():
list_attr.append(column)
return (list_attr)