我对单元测试和py.test很新。
我对测试有疑问。 我需要格式化来自Web服务的数据。 需要处理这些数据(xml,json或其他),需要提取某些部分并将其作为内置python类型(list,dict,collection,...)返回。
如果我需要创建一个检查数据是否格式良好的测试方法,我是否需要使用直接来自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']}"
在我读过的一些书籍或教程中,目的是检查输入是否按预期处理和返回。对于输入a"快照"目前的数据已足够。
所以我从一个不可变的'创建夹具?数据并且不知道web服务发送的更改数据,或者我是否需要创建夹具,在这种情况下,它将是最接近现实的,但风险太依赖于外部行为(如404,例如500错误?
提前致谢。
答案 0 :(得分:1)
通常,您不会针对外部服务进行测试,而是确保您自己的应用程序在处理和处理方面是正确的。
在您的情况下,您可以猴子补丁 Web服务(即实现一个返回一些数据片段的虚拟对象)并测试您的代码是否按预期处理它们。
答案 1 :(得分:0)
通常,您会使用测试数据夹具来设置一些静态或可编程的数据。
当我编写与外部服务交互的单元测试时,通常我会手动调用外部服务并保存响应。然后我将创建一个返回响应的测试夹具 - 它是我在测试中使用的夹具。
您应该使用哪种灯具数据取决于您最感兴趣的代码。例如,如果您的代码正在解析JSON响应,您是否要将fixture数据定义为原始JSON(即'{"foo": "bar"}'
)或解析后的JSON(即{'foo': 'bar'}
)?根据您对最重要的测试结果的判断,它取决于您。