Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 收集期间的Pytest错误会中断程序运行_Python_Python 3.x_Pytest - Fatal编程技术网

Python 收集期间的Pytest错误会中断程序运行

Python 收集期间的Pytest错误会中断程序运行,python,python-3.x,pytest,Python,Python 3.x,Pytest,构建一个程序,创建一个(字符串)电话号码对象,并以多种方式对其进行操作 测试套件调用了许多值错误。要实现这些目标并使程序通过这些测试是非常困难的 例如,对下面number1.number的调用返回: Interrupted: 1 errors during collection 然后程序停止,不调用号码2 我的问题是:如何编写下面的代码,以便在抛出第一个异常后继续运行 class Phone (object): def __init__(self, phone_number):

构建一个程序,创建一个(字符串)电话号码对象,并以多种方式对其进行操作

测试套件调用了许多值错误。要实现这些目标并使程序通过这些测试是非常困难的

例如,对下面number1.number的调用返回:

Interrupted: 1 errors during collection
然后程序停止,不调用号码2

我的问题是:如何编写下面的代码,以便在抛出第一个异常后继续运行

class Phone (object):

    def __init__(self, phone_number):
        punctuation = ['\'', '+', '(', ')', '-', '.',',',' ']
        self.clean_number = [item for item in phone_number if item not in punctuation]
        self.output = ''.join(self.clean_number)
        if self.clean_number[0] == '1' and len(self.clean_number) > 10:
                self.clean_number = self.clean_number[1:]
        self.verify()

    @property
    def number(self):
        if len(self.output) > 10:
            return self.output[1:]
        else:
            return self.output

    @property
    def area_code(self):
        return self.output[:3]

    def pretty(self):
        pretty_number = [char for char in self.clean_number]
        pretty_number.insert(0, '(')
        pretty_number.insert(4, ')')
        pretty_number.insert(5, ' ')
        pretty_number.insert(9, '-')
        return ''.join(pretty_number)

    def verify(self):
        if 'a' in self.clean_number:
            raise ValueError("Letter in number.")

number1 = Phone("123-abc-7890")
print(number1.number)

number2 = Phone("(213) 555-3456")
print(number2.number)
下面是测试,fwiw:

def test_invalid_with_letters(self):
    with self.assertRaisesWithMessage(ValueError):
        Phone("123-abc-7890")

那么,为什么不纠正错误呢?测试收集期间的中断表明,您的模块在导入时出错,因此无法使用。这是一个值错误,用于满足测试套件中的单元测试。如果程序没有成功抛出错误,它就不能通过测试。问题是,当它读取这个值错误时,它在测试收集期间给出了一个错误,并关闭了所有内容。所以看起来语法可能有问题。那么,为什么在模块导入时引发值错误呢?您的模块在当前状态下不可用。如果您想测试
手机(“123-abc-7890”)
,请将其从模块代码中删除并放入测试代码中-这是您在
测试中已完成的操作,其中包含字母。
number1
number2
有什么用途?这是exercism.io的练习,它在测试套件中,如果不能做到这一点,练习将无法通过。你的意思是?不需要,它不需要在模块级设置类似于
number1=Phone(“123-abc-7890”)
的功能。要通过测试,唯一需要的是正确实现
Phone
类。删除类以外的所有内容以运行测试套件。那么,为什么不修复错误呢?测试收集期间的中断表明,您的模块在导入时出错,因此无法使用。这是一个值错误,用于满足测试套件中的单元测试。如果程序没有成功抛出错误,它就不能通过测试。问题是,当它读取这个值错误时,它在测试收集期间给出了一个错误,并关闭了所有内容。所以看起来语法可能有问题。那么,为什么在模块导入时引发值错误呢?您的模块在当前状态下不可用。如果您想测试
手机(“123-abc-7890”)
,请将其从模块代码中删除并放入测试代码中-这是您在
测试中已完成的操作,其中包含字母。
number1
number2
有什么用途?这是exercism.io的练习,它在测试套件中,如果不能做到这一点,练习将无法通过。你的意思是?不需要,它不需要在模块级设置类似于
number1=Phone(“123-abc-7890”)
的功能。要通过测试,唯一需要的是正确实现
Phone
类。删除类以外的所有内容以运行测试套件。