断言字符串是否为有效的int

时间:2016-08-10 13:15:34

标签: python unit-testing python-3.x assert

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

我的功能:

/test

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

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

有没有办法断言,没有unittest

我找到了此SO post,但答案并未提供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) afaict的使用。

特别困扰我的是,我的try/except消息并不像使用纯assert方法那样漂亮和杂乱无章。

failed test

1 个答案:

答案 0 :(得分:1)

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

try:
    intvalue = int(n)
except ValueError:
    intvalue = None

 self.assertIsNotNone(intvalue)

或测试数字

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

请注意,这只适用于没有符号的整数字符串。 +可以接受前导-int(),但str.isdigit()不接受。但是对于您的具体示例,使用str.isdigit()就足够了。