python - 我怎样才能最好地断言一个值可以在 Python 中转换为 int?

标签 python testing assertions

我正在用 Python 编写一些测试,对于其中一个测试,我需要验证一个值是 int 还是可以完全转换为 int。

应该通过:

0
1
"0"
"123456"

应该失败:

""
"x"
"1.23"
3.14

我怎样才能最好地编写这个断言?

最佳答案

所以,为了 100% 确定,它必须是这样的:

def is_integery(val):
    if isinstance(val, (int, long)):  # actually integer values
        return True
    elif isinstance(val, float):  # some floats can be converted without loss
        return int(val) == float(val)
    elif not isinstance(val, basestring):  # we can't convert non-string
        return False
    else:    
        try:  # try/except is better then isdigit, because "-1".isdigit() - False
            int(val)
        except ValueError:
            return False  # someting non-convertible

        return True

在下面的答案中有一个检查,使用类型转换和相等性检查,但我认为它不能正确处理大整数。

也许有更短的路

关于python - 我怎样才能最好地断言一个值可以在 Python 中转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16464279/

相关文章:

javascript - 使用 Mocha 和 Chai 断言 RegExp

python - Flask - 将项目返回到 base.html

python - 防止单元格或魔法函数保存到 python 脚本

python - 测试用户输入 - Python

java - ArrayList<Boolean> 断言 Java 没有 hamcrest

java - 如何避免 Junit 中的 UnsupportedEncodingException

python - 如何让 Perl 和 Python 打印正在执行的程序的每一行?

python - matplotlib:在新窗口中生成新图形以供后续程序运行

python-3.x - Python 中的测试驱动开发

ruby-on-rails - RSpec:带有 searchkick 的无效模型