我对单元测试和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错误)?

提前致谢。

最佳答案

通常,您不会针对外部服务进行测试,而是要确保自己的应用程序在处理和处理上正确无误。

在您的情况下,您可以对网络服务进行猴子补丁(即实现一个返回一些数据片段的虚拟对象)并测试您的代码是否按预期处理了它们。

10-02 11:32