当前位置: 首页 > 面试题库 >

如何使用NoneType对象正确使用单元测试的assertRaises()?

武睿
2023-03-14
问题内容

我做了一个简单的测试用例:

def setUp(self):

  self.testListNone = None

def testListSlicing(self):

  self.assertRaises(TypeError, self.testListNone[:1])

并且我希望测试能够通过,但是我遇到了异常:

Traceback (most recent call last):

    self.assertRaises(TypeError, self.testListNone[:1])

TypeError: 'NoneType' object is unsubscriptable

我以为assertRaises将通过,因为将引发TypeError异常


问题答案:

如果您使用的是python2.7或更高版本,则可以将assertRaises用作上下文管理器并执行以下操作:

with self.assertRaises(TypeError):
    self.testListNone[:1]

如果您正在使用python2.6,那么到目前为止,还有另一种方法是使用unittest2,这是unittest新功能到python2.6的后向端口,您可以使用上面的代码使其工作。

注意:我非常喜欢unittest的新功能(SkipTest,测试发现…),因此我打算尽可能多地使用unittest2。我建议您这样做,因为除了python2.6
<中的unittest之外,还有很多其他内容。



 类似资料:
  • 问题内容: 我知道关于模拟和测试有很多问题,但是我发现没有任何问题可以完美地帮助我,因此我仍然对理解以下内容有疑问: 如果我弄错了,请纠正我,但据我所知,单元测试用于隔离测试一个特定类的业务逻辑,并且如果有外部需要的任何对象,它们将被模拟。因此,例如,如果我有一个简单城市居民的管理系统,该系统将居民添加到列表中并按姓名返回居民(假设:居民仅包含一些基本个人信息),如下所示: 如果现在我要进行单元测

  • 这是我的简单代码 这条线呢 重定向到taskOKAction,但它只允许我通过URL发送参数(?task=123)。 我需要将object$task发送到taskOKAction,以便在屏幕上打印用户在表单中键入的内容。 我该怎么做?在询问好的解决方案是存储表单中的数据(例如,在数据库或文件中)并只在URL中传递对象ID的参数之前,我已经对stackoverflow发了火。我认为这是一个很好的解决

  • 问题内容: 我正在尝试编写代码以检查单击SVG对象的功能-例如此URL上的美国状态 这可行,但是有更好的方法吗?有没有物理移动鼠标的东西? 问题答案: 在SVG中,显示的所有内容都是由坐标定义的块。在您的情况下,每个状态也是一个块,因此有一个XPath,您可以在Selenium代码中使用它。 使用浏览器开发工具分析页面代码,并找到与您要单击的状态相对应的块。 这是与加利福尼亚相对应的元素。 找到它

  • 我正在尝试使用测试驱动设计方法编写一个应用程序--我对单元测试很陌生,所以我只是想知道测试正确输入和异常的正确方法是什么。 我有一个用于加载配置文件的类: null 另外,这3个测试是否都有try{}catch(){}语句?在第一个测试中,正确性是隐含的,在第二个和第三个测试中,我无论如何都在检查异常,所以异常对测试没有影响。

  • 我继承了一个包含单元测试项目的visual studio 2017解决方案。唯一与测试相关的项目引用是Microsoft.Owin.Test。测试包括TestClass和TestMethod属性(在Microsoft . visual studio . test tools . unit testing中定义) 那么,这是否意味着我在使用MSTest或? 我试图追踪一个问题,即继承另一个测试类的测