gpt4 book ai didi

python - 是否有使 Pytest 重新启动的命令?

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:26 25 4
gpt4 key购买 nike

我正在运行一个使用随机选择的两个变量的测试。但是,只有当两个变量不同时,测试才“有效”。如果它们相同,我想“重新开始”测试。

基本上我正在尝试做类似于以下的事情:

import random
import pytest

WORDS = ["foo", "bar"]

def test_maybe_recursive():
word1 = random.choice(WORDS)
word2 = random.choice(WORDS)

# Ensure that 'word1' and 'word2' are different
if word1 == word2:
print("The two words are the same. Re-running the test...")
test_maybe_recursive()

assert word1 != word2 # The actual test, which requires 'word1' and 'word2' to be different

if __name__ == "__main__":
test_maybe_recursive()
# pytest.main([__file__, "-s"]) # This sometimes fails

在这个例子中,我使用递归来确保在 test_maybe_recursive 中,word1word2 是不同的。但是,在 if __name__ == "__main__" block 中,如果我用 pytest.main 调用替换简单的函数调用,测试将失败(一半时间),因为递归不起作用。

我怎样才能使测试“重新启动”自己,以便该示例与 Pytest 一起工作?

最佳答案

您应该解决为测试获取正确设置的问题,而不是尝试向测试运行器添加流控制。 避免测试代码中的逻辑,因为那样你就必须测试测试。

您可以使用 random.sample 而不是使用 random.choice:

word1, word2 = random.sample(WORDS, 2)

假设 WORDS 中没有重复项,它们保证是总体中唯一的选择。

关于python - 是否有使 Pytest 重新启动的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769379/

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