pytest 通过conftest.py获取测试所有执行case断言失败的结果
发布人:shili8
发布时间:2024-12-21 22:20
阅读次数:0
** pytest 中的 conftest.py 文件**
在 pytest 中,`conftest.py` 是一个特殊的文件,它可以被用来定义一些全局配置或函数。这些函数可以被多个测试用例使用,而不需要重复编写相同的代码。
在本文中,我们将展示如何使用 `conftest.py` 文件来获取所有执行的测试用例的结果,包括断言失败的结果。
**示例代码**
首先,让我们创建一个简单的测试用例:
# tests/test_example.pyimport pytestdef test_example(): assert1 +1 ==2
接下来,我们创建一个 `conftest.py` 文件来定义一个函数,用于获取所有执行的测试用例的结果:
# conftest.pyimport pytestdef get_test_results(): results = [] for item in pytest.session.items: if isinstance(item, pytest.Function): result = item.func(*item.args, **item.keywords) results.append(result) return results
在这个函数中,我们使用 `pytest.session.items` 来获取所有执行的测试用例。我们然后遍历每个测试用例,并调用它的函数,传入参数和关键字参数。最后,我们将结果添加到列表中。
**如何使用 conftest.py 文件**
要使用 `conftest.py` 文件中的函数,我们需要在我们的测试用例中导入它:
# tests/test_example.pyimport pytestfrom conftest import get_test_resultsdef test_example(): assert1 +1 ==2test_results = get_test_results() print(test_results)
在这个示例中,我们使用 `get_test_results()` 函数来获取所有执行的测试用例的结果。我们将结果打印到控制台。
**断言失败的结果**
如果某个测试用例的断言失败,`pytest` 将抛出一个 `AssertionError` 异常。我们可以在 `conftest.py` 文件中捕获这个异常,并将其添加到结果列表中:
# conftest.pyimport pytestdef get_test_results(): results = [] for item in pytest.session.items: if isinstance(item, pytest.Function): try: result = item.func(*item.args, **item.keywords) results.append(result) except AssertionError as e: results.append(f"AssertionError: {e}") return results
在这个示例中,我们使用 `try`-`except` 块来捕获 `AssertionError` 异常。我们将异常的信息添加到结果列表中。
**总结**
在本文中,我们展示了如何使用 `conftest.py` 文件来获取所有执行的测试用例的结果,包括断言失败的结果。我们创建了一个简单的测试用例,并定义了一个函数来获取所有执行的测试用例的结果。在示例代码中,我们展示了如何使用这个函数来获取测试用例的结果,并将其打印到控制台。如果某个测试用例的断言失败,我们捕获 `AssertionError` 异常并将其添加到结果列表中。