相关疑难解决方法(0)

如何在python中使用nosetest/unittest断言输出?

我正在为下一个函数编写测试:

def foo():
    print 'hello world!'
Run Code Online (Sandbox Code Playgroud)

所以,当我想测试这个函数时,代码将是这样的:

import sys
from foomodule import foo
def test_foo():
    foo()
    output = sys.stdout.getline().strip() # because stdout is an StringIO instance
    assert output == 'hello world!'
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用-s参数运行nosetests,测试会崩溃.如何通过unittest或nose模块捕获输出?

python unit-testing python-nose nosetests

106
推荐指数
9
解决办法
5万
查看次数

为什么assertEquals()参数在顺序中(预期的,实际的)?

为什么这么多assertEquals()或类似的函数将期望值作为第一个参数而实际的函数作为第二个参数?
这对我来说似乎是违反直觉的,所以这种不寻常的订单有什么特别的原因吗?

debugging assert

52
推荐指数
6
解决办法
2万
查看次数

模拟Python的内置打印功能

我试过了

from mock import Mock
import __builtin__

__builtin__.print = Mock()
Run Code Online (Sandbox Code Playgroud)

但这会引发语法错误.我也试过修补它

@patch('__builtin__.print')
def test_something_that_performs_lots_of_prints(self, mock_print):

    # assert stuff
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

python unit-testing mocking python-2.x

38
推荐指数
4
解决办法
2万
查看次数

pytest 中实际和预期的正确顺序是什么?

这个问题给出了 order assertEqual(expected, actual),尽管是 unittest 包。

但是 Pycharm 和 pytest 会根据 order 打印出“Expected:...”和“Actual...” actual==expected

这令人困惑。pytest 的正确顺序是什么?源代码和在线文档就不说了。

(我还注意到 JUnit 和 TestNG 不同意这一点。)

python pytest python-unittest

16
推荐指数
2
解决办法
4154
查看次数