我有这个代码块,我想单元测试:
@staticmethod
def _read_from_zip(pkg_zip_path):
"""
Return a |BlobCollection| instance loaded from *pkg_zip_path*.
"""
blobs = BlobCollection()
zipf = ZipFile(pkg_zip_path)
for name in zipf.namelist():
blobs[name] = zipf.read(name)
zipf.close()
root_uri = os.path.splitext(pkg_zip_path)[0]
return PhysPkg(blobs, root_uri)
它调用ZipFile,一个库/第三方包,所以我想写一个与ZipFile集成的测试,而不是嘲笑它(不要嘲笑第三方代码规则)。
这是我到目前为止的测试initializer_mock()
是一个帮助函数,它在类上修补\uuu init__()
方法,在本例中:
from opcdiag.phys_pkg import PhysPkg
MINI_PKG_PATH = 'test_files/mini_pkg.zip'
@pytest.fixture
def init(self, request):
return initializer_mock(PhysPkg, request)
def it_can_construct_from_a_zip_package(self, init):
PhysPkg._read_from_zip(MINI_PKG_PATH)
expected_blobs = {'uri_1': b'blob_1\n', 'uri_2': b'blob_2\n'}
init.assert_called_once_with(expected_blobs, ROOT_URI)
问题是,因为我没有模拟ZipFile,所以我不知道如何测试close()
方法是否被调用。
也许我应该写两个测试?这一个通过测试结果来确保与ZipFile的正确集成,另一个通过嘲笑ZipFile来确保off()
被调用?
是的,你应该写两个测试。或者,您可以为库创建一个代理,转发每个方法,但计算调用close
的次数。
我使用代理
而不是mock
是有原因的。您没有替换它(像mock对象通常做的那样)。您只是添加了一个透明层。
你“不模仿第三方库”的原因是你需要测试它们(尤其是当你更新它们或者想要更新它们时)。另一种选择是信任提供者。另一个是创建一个完整的测试。第三种方法(是的,由“不要模仿第三方库”推广的方法)是只在软件有效使用它们的方面对它们进行测试。代理模拟
不会改变这一点。
是否有一种方法可以获得从来电连接到运营商到使用Twilio应答之间的时间? null 有办法得到#5和#9之间的时间增量吗?
运行jUnit时的异常 我想测试这个类,下面是测试方法 运行junit会产生以下异常
我也是Mockito和PowerMockito的新手。我发现我无法使用纯Mockito测试静态方法,因此我需要使用PowerMockito(对吗?)。 我有一个非常简单的类,名为Validate,使用这个非常简单的方法 因此,我需要验证: 1) 当我在null message参数上调用该静态方法时,将调用IllegalArgumentException。2)当我在null object参数上调用该
我目前正在做一个小项目,作为Java测试课程的实习,我们试图看看mocking是如何工作的。 我们的目标是看到我们可以忽略我们所嘲笑的类中的错误。 正如您在Collaborateur中看到的,缺少一个“;”在System.Out之后,exercice的目标是表明嘲笑这个类可以让我们忽略这个错误。我的一些同事使用Eclipse时,使用“以JUnit形式运行”功能没有问题。 在Intellij中,我没
我试图在中模拟axios和。到目前为止,这是我的代码: 据我所知,这和文件里的一模一样 确切的例子: 并且我得到了 我错过了什么?
以下是日志供参考: IllegalStateException:无法转换名为com.xyz.TestLoad的类。原因:java.io.ioException:无效常量类型:在org.powermock.core.classloader.mockClassLoader.loadModifiedClass(MockClassLoader.java:180)在org.powermock.core.cl