我有以下图片作为测试用例

]1
在使用behave时,我们编写了这样一个场景
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而不是Behave。但我在Pytest中找不到对上述情况的支持。我浏览了Pytest-BDD文档,他们对Scenario Outline的支持。
https://pytest-bdd.readthedocs.io/en/latest/
但是我的案例不是一个场景概要,因为我只需要运行这个场景一次,而不是遍历上面提到的字段-值对
我也查看了github,我能找到的最接近的是这个,但这似乎还没有得到批准。
https://github.com/pytest-dev/pytest-bdd/pull/180
Pytest是否以任何方式支持上述场景的实现?如果不是直接的方法,有没有变通的方法来处理它?
发布于 2020-02-08 01:46:53
希望这能帮到你。
则响应应具有以下属性:
| 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 ('response should have below attributes:\n{attr_table}'))
def verify_response_attributes(datatable,attr_table,query_historic_activity_instances):
query_data = query_historic_activity_instances.json()['data']
BaseTest.verify_tbl_attr(attr_table,query_data)
@then(parsers.parse('verify response attribute values:\n{attr_value_table}'))
def verify_response_attribute_values(datatable,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)
# for row in range(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]
for i in range(len(list_attr)):
attr = list_attr[i][0]
attr_val = list_attr[i][1]
path = list_attr[i][2]
for match in parse(path).find(query_data):
assert attr_val == match.value, "The expected %s and Actual %s for %s Dint match" % (
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)发布于 2021-08-18 12:11:55
除了上面给出的答案,下面的方法将有助于在步骤定义中将字符串转换为数据表:
def parse_str_table(self, table_with_headers):
list_table_rows = table_with_headers.split("\n")
list_headers = str(list_table_rows[0]).strip("|").split("|")
dict_table = {}
for header in list_headers:
header_text = header.strip()
lst_row = []
for i in range(1, list_table_rows.__len__()):
list_temp = list_table_rows[i].strip("|").split("|")
lst_row.append(list_temp[list_headers.index(header)].strip())
dict_table[header_text] = lst_row
return dict_tablehttps://stackoverflow.com/questions/55841009
复制相似问题