Questions tagged «python-unittest»

Python的标准测试库框架。

15
如何在目录中运行所有Python单元测试?
我有一个目录,其中包含我的Python单元测试。每个单元测试模块的形式为test _ *。py。我正在尝试制作一个名为all_test.py的文件,您猜对了,它将以上述测试形式运行所有文件并返回结果。到目前为止,我已经尝试了两种方法。都失败了。我将展示这两种方法,并希望那里的人知道如何正确地正确执行此操作。 对于我的第一次英勇尝试,我想:“如果我只是将所有测试模块导入文件中,然后调用此unittest.main()doodad,它将起作用,对吗?” 好吧,原来我错了。 import glob import unittest testSuite = unittest.TestSuite() test_file_strings = glob.glob('test_*.py') module_strings = [str[0:len(str)-3] for str in test_file_strings] if __name__ == "__main__": unittest.main() 这没有用,我得到的结果是: $ python all_test.py ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK 对于第二次尝试,我还是可以,也许我会尝试以“手动”方式进行整个测试。所以我尝试在下面这样做: import glob import unittest testSuite = unittest.TestSuite() test_file_strings = glob.glob('test_*.py') module_strings …

7
通过命令行从unittest.TestCase运行单个测试
在我们的团队中,我们定义了大多数测试用例,如下所示: 一门“框架”课ourtcfw.py: import unittest class OurTcFw(unittest.TestCase): def setUp: # something # other stuff that we want to use everywhere 还有很多测试用例,例如testMyCase.py: import localweather class MyCase(OurTcFw): def testItIsSunny(self): self.assertTrue(localweather.sunny) def testItIsHot(self): self.assertTrue(localweather.temperature > 20) if __name__ == "__main__": unittest.main() 当我编写新的测试代码并希望经常运行它并节省时间时,我要做的是在所有其他测试之前放置“ __”。但这很麻烦,使我从正在编写的代码中分散了注意力,并且由此产生的提交噪音实在令人讨厌。 因此,例如,当对进行更改时testItIsHot(),我希望能够做到这一点: $ python testMyCase.py testItIsHot 并unittest运行只 testItIsHot() 我该如何实现? 我尝试重写该if __name__ == …


2
Python从导入的模块中模拟函数
我想了解如何@patch从导入的模块执行功能。 这是我到目前为止的位置。 app / mocking.py: from app.my_module import get_user_name def test_method(): return get_user_name() if __name__ == "__main__": print "Starting Program..." test_method() app / my_module / __ init__.py: def get_user_name(): return "Unmocked User" 测试/模拟测试.py: import unittest from app.mocking import test_method def mock_get_user(): return "Mocked This Silly" @patch('app.my_module.get_user_name') class MockingTestTestCase(unittest.TestCase): def test_mock_stubs(self, …

11
AttributeError:“模块”对象没有属性“测试”
我正在运行以下命令: python manage.py test project.apps.app1.tests 并导致此错误: AttributeError:“模块”对象没有属性“测试” 下面是我的目录结构。我还已将app1添加到已安装的应用程序配置中。 Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 50, in run_from_argv super(Command, self).run_from_argv(argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) …


2
如何在单元测试中使用JSON发送请求
我在Flask应用程序中包含在请求中使用JSON的代码,并且可以像这样获取JSON对象: Request = request.get_json() 一切正常,但是我试图使用Python的unittest模块创建单元测试,并且很难找到一种发送带有请求的JSON的方法。 response=self.app.post('/test_function', data=json.dumps(dict(foo = 'bar'))) 这给了我: >>> request.get_data() '{"foo": "bar"}' >>> request.get_json() None Flask似乎有一个JSON参数,您可以在其中发布请求中设置json = dict(foo ='bar'),但我不知道如何使用unittest模块来做到这一点。


1
Python返回MagicMock对象而不是return_value
我有一个Python文件a.py包含两个类A和B。 class A(object): def method_a(self): return "Class A method a" class B(object): def method_b(self): a = A() print a.method_a() 我想通过嘲笑method_b在课堂上B进行单元测试A。这是testa.py用于此目的的文件内容: import unittest import mock import a class TestB(unittest.TestCase): @mock.patch('a.A') def test_method_b(self, mock_a): mock_a.method_a.return_value = 'Mocked A' b = a.B() b.method_b() if __name__ == '__main__': unittest.main() 我希望得到Mocked A输出。但是我得到的是: <MagicMock name='A().method_a()' id='4326621392'> …

10
如何测试Python 3.4异步代码?
使用Python 3.4asyncio库编写代码的单元测试的最佳方法是什么?假设我要测试一个TCP客户端(SocketConnection): import asyncio import unittest class TestSocketConnection(unittest.TestCase): def setUp(self): self.mock_server = MockServer("localhost", 1337) self.socket_connection = SocketConnection("localhost", 1337) @asyncio.coroutine def test_sends_handshake_after_connect(self): yield from self.socket_connection.connect() self.assertTrue(self.mock_server.received_handshake()) 当使用默认测试运行程序运行此测试用例时,测试将始终成功,因为该方法仅执行到第一yield from条指令为止,然后在执行任何断言之前返回该指令。这导致测试始终成功。 是否有一个预构建的测试运行器能够处理这样的异步代码?

14
Python unittest:如何仅运行测试文件的一部分?
我有一个测试文件,其中包含花费大量时间的测试(它们将计算结果发送到集群并等待结果)。所有这些都在特定的TestCase类中。 由于它们需要时间,而且不太可能中断,因此我希望能够选择测试的该子集是否运行(最好的方法是使用命令行参数,即“ ./tests.py --offline”或其他内容)这样),因此我可以在需要的时候经常且快速地运行大多数测试,并偶尔进行整套测试。 现在,我只是unittest.main()用来开始测试。 谢谢。

5
有什么方法可以检查Python unittest assert是否可迭代不为空?
向服务提交查询后,我得到了字典/列表,并希望确保它不为空。我使用的是Python 2.7。 我很惊讶我没有assertEmpty为unittest.TestCase类实例找到任何方法。 现有的替代方案,例如: self.assertTrue(bool(d)) 和 self.assertNotEqual(d,{}) 和 self.assertGreater(len(d),0) 只是看起来不正确。 Python unittest框架中缺少这种方法吗?如果是,那么断言Iterable不为空的最Python方式是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.