加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 是否有命令使Pytest重启?

发布时间:2020-12-20 11:58:28 所属栏目:Python 来源:网络整理
导读:我正在运行一个使用随机选择的两个变量的测试.但是,如果两个变量不同,则测试仅“起作用”.如果它们是相同的,我想“重启”测试. 基本上我正在尝试做类似以下的事情: import randomimport pytestWORDS = ["foo","bar"]def test_maybe_recursive(): word1 = ra
我正在运行一个使用随机选择的两个变量的测试.但是,如果两个变量不同,则测试仅“起作用”.如果它们是相同的,我想“重启”测试.

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

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中,word1和word2是不同的.但是,在if __name__ ==“__ main__”块中,如果我用pytest.main调用替换简单函数调用,则测试失败(一半时间),因为递归不起作用.

如何使测试’重启’本身,以便该示例适用于Pytest?

解决方法

您应该解决测试的正确设置,而不是尝试将流量控制添加到测试运行器.避免在测试代码中使用逻辑,因为那时您必须测试测试.

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

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

假设在WORDS中没??有重复,它们保证是人口中的唯一选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读