我对单元测试和py.test相当陌生。
我对测试有疑问。
我需要格式化来自Web服务的数据。
这些数据(xml,json或其他数据)需要进行处理,某些部分需要提取并作为内置的python类型(列表,字典,集合等)返回。
如果我需要创建一种测试方法来检查数据格式是否正确,是否需要使用直接来自Web服务的固定装置,还是需要根据Web服务提供的数据表示来创建固定装置?
例如:
tests.py
def test_well_formated_data(the_fixture):
assert isintance(formatting_method(the_fixture), list)
# and other assertion...
conftests.py
@pytest.fixture
def the_fixture()
return Webservices.connect()
或代表:
@pytest.fixture
def the_fixture()
# Here is the same string returned by the webservices
# each time it's called
return "{'foo': [ 'bar', 'spam', 'egg']}"
在我读过的一些书或教程中,目的是检查输入是否按预期方式处理并返回。对于输入而言,此刻的数据快照就足够了。
因此,我是根据“不可变的”数据创建固定装置,而不知道Web服务发送的已更改数据,还是我需要创建固定装置,在这种情况下,它是最接近现实的情况,但也存在风险取决于外部行为(例如404、500错误)?
提前致谢。
最佳答案
通常,您不会针对外部服务进行测试,而是要确保自己的应用程序在处理和处理上正确无误。
在您的情况下,您可以对网络服务进行猴子补丁(即实现一个返回一些数据片段的虚拟对象)并测试您的代码是否按预期处理了它们。