Behave 将所有测试打印到文本文件

Behave print all tests to a text file

我被要求提供我们 运行 的每个行为特征和场景的列表,作为我们向外部客户提供文档(而不是步骤)的回归包的一部分

由于我们的回归测试套件目前大约有 50 个功能文件,每个文件至少有 10 个场景,所以我不想手动复制和粘贴。

有没有办法将功能名称和 ID,然后将该功能下的每个场景的名称和 ID 导出到 CSV 或文本文件?

目前我们的行为测试是 运行 本地的,我正在使用 PyCharm IDE 来编辑它们。

我找到了一个迂回的方法来做到这一点。

将Behave设置为使用命令导出到外部txt文件 输出文件 = test_list

然后使用 behave -d 命令 运行 我的测试作为干 运行。 然后用每个测试的特性、场景和步骤填充 txt 文件。 我可以将其导出到 Excel,通过过滤可以隔离特征和场景行,删除步骤,然后使用文本分栏将 feature/scenario 描述与其测试 path/name 分开。

如果有一种不那么迂回的方式来执行此操作,那么最好知道,因为看起来这是我们需要能够半定期提供的信息,以便向前推进。

您可以利用context.scenario获取场景名称和功能名称,然后将它们写入文本文件。 您应该将这些代码放在 after_scenario 中 environment.py 中,以便您也可以获取场景状态。

我正在使用它来将场景名称、状态和功能名称导出到文本文件中。每个将由“|”分隔。我稍后将此文件导入 excel 文件以进行报告。

以下是您可以参考的代码:

def write_scenario_summary(context, scenario, report_path):
    try:
    # scenario status could be [untested, skipped, passed, failed]
        status = scenario.compute_status().name.upper()
        feature = ReportingHelper.get_feature_name(scenario)
        logging_info = '{status} | {feature} | | {scenario_name}'.format(
        status=status,
        feature=feature,
        scenario_name=scenario.name)
    print(logging_info, file=open(report_path, 'a'))


def get_feature_name(scenario):
    feature_file_path = scenario.feature.filename
    return os.path.basename(feature_file_path)

希望对您有所帮助。