判断字符串是否为有效的整型



我是TDD的新手,在尝试编写测试时遇到了一种情况。

我的函数:

def nonce():
    return str(int(1000 * time.time()))

我已经为它写了一个测试-虽然它做了我想要的,但似乎应该在unittest模块中有一些东西来处理这个?:

def test_nonce_returns_an_int_as_string(self):
    n = 'abc'  # I want it to deliberately fail
    self.assertIsInstance(n, str)
    try:
        int(n)
    except ValueError:
        self.fail("%s is not a stringified integer!" % n)

在没有try/except的情况下,是否有一种方法可以断言这个

我发现了这个帖子,但是答案没有提供assert的用法。

特别困扰我的是,我的failed test消息不像使用纯unittest.TestCase方法那样漂亮和无杂乱。

Failure
Traceback (most recent call last):
  File "/git/bitex/tests/client_tests.py", line 39, in test_restapi_nonce
    int(n)
ValueError: invalid literal for int() with base 10: 'a'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "//git/bitex/tests/client_tests.py", line 41, in test_restapi_nonce
    self.fail("%s is not a stringified integer!" % n)
AssertionError: a is not a stringified integer!

可以在异常处理程序之外断言;这样Python就不会将AssertionError异常连接到正在处理的ValueError:

try:
    intvalue = int(n)
except ValueError:
    intvalue = None
 self.assertIsNotNone(intvalue)

或测试数字而不是

self.assertTrue(n.strip().isdigit())

注意,这只适用于不带符号的整型字符串。int()可以接受前导+-,但str.isdigit()不能接受。但是对于您的特定示例,使用str.isdigit()就足够了。

相关内容

  • 没有找到相关文章

最新更新