相关疑难解决方法(0)

如何使用pytest检查是否未引发Error

让我们假设我们有这样的结果:

import py, pytest

ERROR1 = ' --- Error : value < 5! ---'
ERROR2 = ' --- Error : value > 10! ---'

class MyError(Exception):
    def __init__(self, m):
        self.m = m

    def __str__(self):
        return self.m

def foo(i):
    if i < 5:
        raise MyError(ERROR1)
    elif i > 10:
        raise MyError(ERROR2)
    return i


# ---------------------- TESTS -------------------------
def test_foo1():
    with pytest.raises(MyError) as e:
        foo(3)
    assert ERROR1 in str(e)

def test_foo2():
    with pytest.raises(MyError) as e:
        foo(11)
    assert ERROR2 in str(e)

def test_foo3(): …
Run Code Online (Sandbox Code Playgroud)

python raise pytest

50
推荐指数
4
解决办法
3万
查看次数

如果未引发异常,则传递Python unittest

在Python unittest框架中,如果没有引发异常,有没有办法传递单元测试,否则会出现AssertRaise失败?

python unit-testing

17
推荐指数
3
解决办法
2万
查看次数

Python - 在未引发异常时成功的测试

我知道unittestPython模块.

我知道课堂的assertRaises()方法TestCase.

我想编写一个在引发异常时成功的测试.

有什么提示吗?

python unit-testing exception-handling exception

15
推荐指数
3
解决办法
9813
查看次数

将 numpy.testing 函数与 unittest 结合使用

我正在numpy.testing.assert_almost_equal单元测试环境中使用 - 但我不确定结合 numpy 和单元测试的正确方法是什么。

我的第一个方法是使用单元测试中的assertTrue并结合is None如下比较:

from unittest import TestCase
import numpy as np

class TestPredict(TestCase):
    def test_succeeding(self):
        self.assertTrue(
            np.testing.assert_almost_equal(1, 0.9999999999999) is None
        )
    def test_failing(self):
        self.assertTrue(
            np.testing.assert_almost_equal(1, 0.9) is None
        )
Run Code Online (Sandbox Code Playgroud)

这给出了正确的测试结果,但它有点 hacky 并且使测试代码变得臃肿。

更简单的方法如下:

from unittest import TestCase
import numpy as np

class TestPredict(TestCase):
    def test_succeeding(self):
        np.testing.assert_almost_equal(1, 0.9999999999999)
    def test_failing(self):
        np.testing.assert_almost_equal(1, 0.9)
Run Code Online (Sandbox Code Playgroud)

此代码还返回正确的测试统计信息,如上面所示,但它更具可读性。我看到的唯一缺点是 pylint 抱怨“R0201 方法可能是一个函数”消息。这会成为一个问题吗?

PS:我在这里检查了多篇看起来相关的帖子,但没有回答我关于单元测试和 numpy 测试集成的具体问题。(例如/sf/answers/302390931/讨论了在单元测试中捕获异常。这似乎是错误的,或者只是一种矫枉过正。)

python numpy python-unittest

5
推荐指数
1
解决办法
3644
查看次数

如何检查TDD中是否存在方法?

在严格的测试驱动开发方法中,每个步骤都需要事先进行测试.即使是一个类或它的方法的存在 - 严格来说 - 在实际创建之前要进行测试.

我有一个问题是进行写测试以查看方法是否存在.

class BasicTests(unittest.TestCase):

    def setUp(self):
        self.test = RandomGenClass()        

    def testRandomGenClassExists(self):
        """ Does the class exist? """        
        self.assert_(self.test is not None)

    def testMyMethodExists(self):
        """ Does MyMethod() exist?"""
        result = self.test.myMethod()
        self.assert_(result is not None)
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,如果该类不存在,Python就已经失败了.测试永远不会断言.有没有更好的方法来实现这一目标?

python unit-testing python-2.7

3
推荐指数
1
解决办法
4643
查看次数