python,比如assertFunctionNotCalled?

python,比如assertFunctionNotCalled?,python,unit-testing,Python,Unit Testing,编辑:这个问题涉及python 3.5 在python单元测试中,有没有一种方法可以断言给定的代码块没有被调用 我有一个正在测试的功能,可以遵循两个分支中的任何一个:如果用户以前登录过,则是更快、更可靠的分支;如果是第一次访问,则是更慢、更不可靠的分支。基本上,用户第一次登录时,程序必须从单独的服务器请求关于他们的信息,这可能会很慢(有时会停机)。但是,一旦它拥有了信息,它就会在本地缓存它,并且应该只使用本地缓存来存储后续登录时的数据 无论哪种方式,函数的最终结果都是相同的,因此我无法通过查看函

编辑:这个问题涉及python 3.5

在python单元测试中,有没有一种方法可以断言给定的代码块没有被调用

我有一个正在测试的功能,可以遵循两个分支中的任何一个:如果用户以前登录过,则是更快、更可靠的分支;如果是第一次访问,则是更慢、更不可靠的分支。基本上,用户第一次登录时,程序必须从单独的服务器请求关于他们的信息,这可能会很慢(有时会停机)。但是,一旦它拥有了信息,它就会在本地缓存它,并且应该只使用本地缓存来存储后续登录时的数据


无论哪种方式,函数的最终结果都是相同的,因此我无法通过查看函数的输出来知道获取信息所用的代码分支。因此,理想情况下,我希望能够有效地执行
assertFunctionNotCalled
,以测试它在第二次(以及随后的)登录尝试时是否从本地缓存中提取。我应该如何最好地测试它?

使用名为like so的bool:

from mock import patch
with patch('something') as mock_something:
    self.assertFalse(mock_something.called)

您是在为这些测试模拟单独的服务器吗?到目前为止你都试了些什么?@jonrsharpe:没有,我是按实际要求做的。由于它只是一个SELECT,所以多次运行不会对它造成影响。它可能不会造成任何影响,但会使测试变得更加困难(以及告诉哪一方发生了任何破坏性的更改)。也许这应该是针对模拟的单元测试,而实际调用的测试应该是单独的集成测试。@jornsharpe,这很有意义。由于该函数是一个模拟函数,我可以直接检查它是否被调用(或者这就是MagicMock的用途?)。只需检查该功能是否完全按照预期工作即可。