如何测试负数并提高ValueError?

时间:2016-04-16 16:58:13

标签: python

我正在完成这个tutorial。我正在迭代地完成这个工作。此时我有以下二进制类:

class Binary:
    def __init__(self,value):
        self.value = str(value)
        if self.value[:2] == '0b':
            print('a binary!')
            self.value= int(self.value, base=2)
        elif self.value[:2] == '0x':
            print('a hex!')
            self.value= int(self.value, base=16)
        else:
            print(self.value)

    def __int__(self):
        if self.value[:1] == '-':
            return ValueError
        return int(self.value)

我正在使用pytest运行一系列测试,包括:

 def __int__(self):
>       if self.value[:1] == '-':
E       TypeError: 'int' object is not subscriptable

我理解错误,因为我将参数保存为int。在这种情况下,测试负数并提出valueerror异常的好策略是什么?

1 个答案:

答案 0 :(得分:1)

如果value是int,则value < 0是值为负的测试。你应该已经知道了。也许您应该查看文档集中的教程。

另一个问题是您的 init 方法很混乱。它将输入转换为字符串,有时将字符串(后退?)转换为int。当 init 完成时,self.value应该具有所需类型的允许值。