python - @unittest.skip 在 Python <= 3.7 中不打印任何内容
问题描述
我们将 Django 与unittest
. @unittest.skip
装饰器跳过了一些测试。但是,如果我使用 Python 3.6 或 3.7Ran 993 tests / OK
运行测试,我会通过一些测试Ran 993 tests / OK (skipped=4)
(我想知道 Python 3.6 和 3.7 是否也跳过了相同的测试,还是仅使用 Python 3.8?为什么我只能使用 Python 3.8 获得跳过的输出?数字 993 是否包括跳过的测试?其中一个输出不正确吗?因为不同版本的 Python 的输出不同是没有意义的,我不明白这种差异的原因。我没有在文档中找到它。
我们的代码是开源的,您可以在此处查看例如跳过的测试。
更新:我用 decorator 添加了 4 个测试@unittest.skip
。当我使用 Python 3.8 运行所有测试时,我得到了这个输出:(每个跳过的测试都有一个,就像以前一样)Ran 997 tests / OK (skipped=8)
。s
但是如果我用 Python 3.6 或 3.7 运行测试,我会得到这个输出:输出Ran 997 tests / OK
中没有s
,就像以前一样(我得到 997 个点)。虽然我比以前多了 4 个测试。
我添加的测试会引发异常,因此如果不跳过它们,它们就会失败。
我认为跳过的测试在所有 Python 版本中都被跳过,但在 Python 3.6 和 3.7 中,没有关于它们被跳过的输出。它是一个错误吗?
解决方案
是的,这是一个错误,但在您的代码中。您正在使用@unittest.skip
而不是@unittest.skip(reason)
. 弄清楚skip()
3.7 和 3.8 之间的实现是否以及如何准确地改变以导致行为改变,或者它是否完全不同,留作练习。
skip()
正确使用时,您会得到ss
打印并使用 Python 3.7 报告跳过的测试。
推荐阅读
- php - 如何使用 gcloud 存储密钥文件从本地计算机进行身份验证
- c# - 如何确保在没有构造函数的情况下正确初始化对象?
- javascript - 对象数组中的舍入值
- ms-word - Word add in:如何通过单击文档中的超链接来激活任务窗格
- powershell - 如何使用函数身份验证或 Azure AD 服务主体对 Azure 函数进行身份验证
- html - Html表单获取请求不添加表单数据
- javascript - getBoundingClientRect 根据滚动位置动态变化?
- react-native - 让 React-native Ui 响应式
- css - 使用 * 运算符将 css 应用于所有
- php - 将数组值解析为 WooCommerce REST API