【问题标题】:Python: Unittest for error on substitutionPython:替换错误的单元测试
【发布时间】:2021-03-24 05:36:55
【问题描述】:

我想测试属性验证是否有效。我对unittest没有一个好主意。 目标类是这样的:

class SomeClass:pass

class Foo:
    @property
    def a(self):
        return self._a
    
    @a.setter
    def a(self, _a):
        assert isinstance(_a, SomeClass), TypeError

class OtherClass:pass

f = Foo()
f.a = OtherClass() # <- I want to test that this raise error. 
    

【问题讨论】:

    标签: python unit-testing validation properties python-unittest


    【解决方案1】:

    你必须使用assertRaises

    from unittest import TestCase
    
    with self.assertRaises(TypeError):
        f = Foo()
        f.a = OtherClass()
    

    【讨论】:

    • 感谢您回答问题。然而它没有用。我认为“f.a = OtherClass()”不起作用。 assertRaises 可以在赋值运算符上工作吗?
    • assertError 如果引发了您传递给它的类型的异常,则该异常有效。如果作业提出,那么答案是肯定的。
    • 对不起,这是我的错。你的建议可以奏效。我再次感谢你。
    • "assert isinstance(_a, SomeClass), TypeError" 引发 AssertionError。然后我变成了 raise 声明。
    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 2020-02-17
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多