Python 当测试通过时,NoTests/unittest仍然显示错误?

Python 当测试通过时,NoTests/unittest仍然显示错误?,python,nosetests,python-unittest,flask-restless,Python,Nosetests,Python Unittest,Flask Restless,我有一个单元测试,它测试如果未进行如下身份验证,api点是否不可访问: def test_endpoint_get_unauth(self): r = self.get('/api/endpoint/1') self.assertStatusCode(r, 401) 测试通过了,但nosetests/unittest仍然向我显示一个错误,即引发了一个异常,说“未授权”。是否有任何方法停止此操作 完整日志: ERROR in views [/myenv/lib/python2.7

我有一个单元测试,它测试如果未进行如下身份验证,api点是否不可访问:

def test_endpoint_get_unauth(self):
    r = self.get('/api/endpoint/1')
    self.assertStatusCode(r, 401)
测试通过了,但nosetests/unittest仍然向我显示一个错误,即引发了一个异常,说“未授权”。是否有任何方法停止此操作

完整日志:

ERROR in views [/myenv/lib/python2.7/site-packages/flask_restless/views.py:115]:
Not Authorized
--------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/myapp/myenv/lib/python2.7/site-packages/flask_restless/views.py", line 113, in decorator
    return func(*args, **kw)
  File "/myapp/myenv/lib/python2.7/site-packages/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/myapp/myenv/lib/python2.7/site-packages/flask/views.py", line 149, in dispatch_request
    return meth(*args, **kwargs)
  File "/myapp/myenv/lib/python2.7/site-packages/flask_restless/views.py", line 989, in get
    preprocessor(instance_id=instid)
  File "/myapp/app/api/api.py", line 16, in check_auth
    raise ProcessingException(message='Not Authorized', status_code=401)
ProcessingException
................
----------------------------------------------------------------------
Ran 16 tests in 15.788s

OK

错误不是来自失败的测试用例,而是来自被测试的应用程序,它抱怨未经授权的访问

这是很自然的,因为您的测试用例只是试图进行未经授权的访问


由于被测试的应用程序和测试套件都使用标准输出,这让您感到困惑。您可以通过配置应用程序和测试套件的日志记录来将其添加到不同的文件中,您将看到谁在说什么。

您看到的消息可能来自应用程序日志记录

“ERROR”
是事件的记录级别,您需要将记录器阈值设置为更高的值

假设您的testcase对象具有测试客户端应用程序的
app
属性, 如果不想看到该测试的错误消息,请编写:

def test_endpoint_get_unauth(self):
    import logging
    self.app.logger.setlevel(logging.CRITICAL)

    r = self.get('/api/endpoint/1')
    self.assertStatusCode(r, 401)

有关详细信息,请参见

您可以使用nose选项
--logging level=ERROR
来设置每次运行的日志记录级别

你的信息是矛盾的——你的测试通过了,但失败了。您没有提供足够的信息,这里是引发异常的代码吗?@JanVlcinsky我相信OP是说此测试期望endpont抛出未授权的状态代码,因此当测试中的端点失败时,测试应该通过。问题是,虽然端点正确抛出未授权错误,但测试并没有将其视为预期情况,而是将其视为错误(这与测试失败不同)。@PatricYan您可以向我们展示测试的输出吗?是关于这个测试用例,还是关于另一个测试用例?@JanVlcinsky,上面的J0HN是对的。测试通过(并且没有失败),因为状态代码是401(assertStatusCode正在测试的内容)。但是,在终端中,我仍然得到一个错误日志,即在未授权的情况下访问端点。@PatrickYan您谈论的是终端。它的打印过程是什么?鼻子测试?还是烧瓶?或者两者都有?如果Flask也在那里抛出日志行,那么很自然,它会报告未经授权的访问,因为这正是您的测试用例所做的。我的问题是如何抑制成功测试的错误输出。我已经知道我的测试用例没有失败,而且我还没有找到如何在nosetests中实现我想要的功能。@PatrickYan我添加了一个建议,用于配置从应用程序和从test unite到不同流/文件的日志记录。这将解决你的问题。我想,最简单的方法是将Flask应用程序配置为仅登录到文件。