相关疑难解决方法(0)

你如何测试Python函数抛出异常?

如果一个函数没有抛出预期的异常,那么如何编写一个单元测试失败?

python unit-testing exception-handling exception

695
推荐指数
15
解决办法
37万
查看次数

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

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

def setUp(self):

  self.testListNone = None

def testListSlicing(self):

  self.assertRaises(TypeError, self.testListNone[:1])
Run Code Online (Sandbox Code Playgroud)

我期待测试通过,但我得到例外:

Traceback (most recent call last):

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

TypeError: 'NoneType' object is unsubscriptable
Run Code Online (Sandbox Code Playgroud)

我认为assertRaises会通过,因为会引发TypeError异常?

python unit-testing

154
推荐指数
4
解决办法
10万
查看次数

使用带有Python assertRaises的上下文管理器

Python文档unittest意味着该assertRaises()方法可以用作上下文管理器.下面的代码给出了一个Python文档中单元测试的简单示例.方法中的assertRaises()调用testsample()工作正常.

现在我想在引发异常的时候访问它,但是如果我将它注释掉,而是取消注释我尝试使用上下文管理器的下一个块,那么AttributeError: __exit__当我尝试执行代码时,我会得到一个.这适用于Python 2.7.2和3.2.2.我可以在try...except块中捕获异常并以这种方式访问​​它,但unittest的文档似乎暗示上下文管理器也会这样做.

还有别的我在这里做错了吗?

class TestSequenceFunctions(unittest.TestCase):

    def setUp(self):
        self.seq = [x for x in range(10)]

    def testshuffle(self):
        # make sure the shuffled sequence does not lose any elements
        random.shuffle(self.seq)
        self.seq.sort()
        self.assertEqual(self.seq, [x for x in range(10)])

    def testchoice(self):
        element = random.choice(self.seq)
        self.assert_(element in self.seq)

    def testsample(self):
        self.assertRaises(ValueError, random.sample, self.seq, 20)

        # with self.assertRaises(ValueError, random.sample, self.seq, 20):
        #     print("Inside cm")

        for element in random.sample(self.seq, 5):
            self.assert_(element in self.seq) …
Run Code Online (Sandbox Code Playgroud)

python unit-testing

12
推荐指数
2
解决办法
8422
查看次数