编辑:请注意我正在使用Python 2.6(标记为)
说我有以下内容:
class Foo:
def bar(self):
print 'bar'
return 7
Run Code Online (Sandbox Code Playgroud)
并说我有以下单元测试:
import unittest
class ut_Foo(unittest.TestCase):
def test_bar(self):
obj = Foo()
res = obj.bar()
self.assertEqual(res, 7)
Run Code Online (Sandbox Code Playgroud)
所以如果我跑:
unittest.main()
Run Code Online (Sandbox Code Playgroud)
我明白了:
bar # <-- I don't want this, but I *do* want the rest
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
Exit code: False
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法抑制被测对象的输出,同时仍然得到unittest框架的输出?
编辑 此问题不是标记问题的副本,该问题询问是否在正常python脚本中对特定函数的stdout进行静默.
虽然这个问题是在运行它的单元测试时询问是否隐藏了python脚本的正常标准输出.我仍然希望显示unittest标准输出,我不想禁用我测试过的脚本的标准输出.
我正在python中编写一些单元测试,测试是否收到整数.然而,有时这个整数可以关闭1或2,我真的不在乎.基本上我希望能够断言收到的整数在一定范围内,如:
self.assertBetween(998, 1000, my_integer)
Run Code Online (Sandbox Code Playgroud)
这是否有可接受的方式?或者我必须做这样的事情:
self.assertTrue(998 <= my_integer)
self.assertTrue(my_integer <= 1000)
Run Code Online (Sandbox Code Playgroud)
编辑 到目前为止的答案建议:
self.assertTrue(998 <= my_integer <= 1000)
Run Code Online (Sandbox Code Playgroud)
在我的2个断言的例子中,这有什么好处吗?
我已经看到提及index和simple indexPyPI相关的一个和一个例子在devpi文档中.两个指数之间有什么区别吗?它们是相同的还是具有不同的访问控制或功能?
我在不同的目录中有一堆unittest测试用例。还有一个目录仅包含测试的帮助程序脚本。所以我的文件树看起来像这样
test_dir1
test_dir2
test_dir3
helper_scripts
Run Code Online (Sandbox Code Playgroud)
每个 python 文件test_dir*都会有这些行:
import sys
sys.path.append('../helper_scripts')
import helper_script
Run Code Online (Sandbox Code Playgroud)
只要我从他们的目录中运行测试,这一切都可以正常工作。但是,我想在项目根目录下运行:
py.test
Run Code Online (Sandbox Code Playgroud)
并让它遍历所有目录并运行它找到的每个测试。问题是测试是从错误的目录运行的,因此不会sys.path.append附加helper_scripts目录,而是附加项目根目录的父目录。这使得所有导入失败并带有Import Error.
有没有办法告诉py.test从他们的目录运行测试脚本?IE。在执行它们之前更改cwd?如果没有,我可以使用另一个测试运行程序吗?
我正在对类进行子threading.Thread类化,它目前看起来像这样:
class MyThread(threading.Thread):
def __init__(self:
super(MyThread, self).__init__()
def run(self):
# Do some stuff
Run Code Online (Sandbox Code Playgroud)
__init__在这种情况下是必需的吗?如果我省略它,它会自动调用吗?
我正在尝试测试我创建的一个函数,该函数遍历列表并调用列表os.path.exists中的每个项目。我的测试是向函数传递 2 个对象的列表。我需要os.path.exists返回True的其中之一,并False为其他。我试过这个:
import mock
import os
import unittest
class TestClass(unittest.TestCase):
values = {1 : True, 2 : False}
def side_effect(arg):
return values[arg]
def testFunction(self):
with mock.patch('os.path.exists') as m:
m.return_value = side_effect # 1
m.side_effect = side_effect # 2
arglist = [1, 2]
ret = test(argList)
Run Code Online (Sandbox Code Playgroud)
使用第 1 行和第 2 行中的任何一个但不是同时使用 NameError: global name 'side_effect' is not defined
我发现了这个问题并像这样修改了我的代码:
import mock
import os
class TestClass(unittest.TestCase):
values = {1 : True, …Run Code Online (Sandbox Code Playgroud) 我正在从文本文件中读取逗号分隔的数字,并在文件中执行所有数字的添加 - 但我得到的总和是错误的.
1,2,3
Run Code Online (Sandbox Code Playgroud)
val file=Source.fromFile("D:/scala/test.txt")
val f1=file.foldLeft(0)((a,b)=>a+b)
println(f1)
Run Code Online (Sandbox Code Playgroud)
238
Run Code Online (Sandbox Code Playgroud)
我可以在数组上执行添加并且它工作正常,但是从文件中读取数据时我无法得到正确的答案.
python ×6
python-2.7 ×4
unit-testing ×2
inheritance ×1
mocking ×1
oop ×1
pypi ×1
pytest ×1
python-2.6 ×1
scala ×1