gpt4 book ai didi

python - Pytest 安排测试组之间的时间间隔

转载 作者:行者123 更新时间:2023-12-04 09:00:40 25 4
gpt4 key购买 nike

有没有办法告诉 pytest 运行一组测试,然后等待一段已知的时间,然后运行另一组测试?例如,如果我有具有以下要求的测试:

  • 每个测试有 3 个部分(3 个执行方法)
  • 在运行第 1 部分后经过特定的已知时间之前,不得为每个测试运行第 2 部分。
  • 在运行第 2 部分后经过特定的已知时间之前,不得为每个测试运行第 3 部分。

  • 如果我将每个测试的第 1、2 和 3 部分缝合在一起并且只使用 time.sleep(),那么执行所有测试将花费太长时间。
  • 相反,我想背靠背运行所有第 1 部分,然后等待已知时间,然后背靠背运行所有第 2 部分,然后等待已知时间,然后运行所有第 3 部分。

  • 看来这应该可以使用标记 https://docs.pytest.org/en/stable/example/markers.html 来实现。并可能实现 Hook https://docs.pytest.org/en/latest/reference.html#hooks根据使用的标记实现某些行为,尽管我对 pytest 钩子(Hook)不是很熟悉。
    我还遇到了 pytest-ordering https://pytest-ordering.readthedocs.io/en/develop/这似乎提供了接近我正在寻找的行为。我只需要一种在某些测试组之间等待的方法。

    最佳答案

    您可以将所有第一部分测试合并到一个类中,将所有第二部分测试合并到另一个类中,并使用类范围固定装置进行延迟,如下所示:

    import pytest
    import time


    @pytest.fixture(scope='class')
    def delay():
    time.sleep(5)


    class TestPart1:
    def test_one_part_1(self):
    assert 1 == 1

    def test_two_part_1(self):
    assert 2 == 2


    @pytest.mark.usefixtures("delay")
    class TestPart2:
    def test_one_part_2(self):
    assert 1 == 1

    def test_two_part_2(self):
    assert 2 == 2

    关于python - Pytest 安排测试组之间的时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63577134/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com