跳转到主要内容

可覆盖 json 固定值的测试工具

项目描述

[![构建状态](https://travis-ci.org/internap/jabstract.svg?branch=master)](https://travis-ci.org/internap/jabstract)

欢迎单元测试者!

## 这不是很好

```
def test_something()
api_response = {
"field1": "value1",
"field2": "value2",
....
"field37": "value37",
....
"field7632": "value7632"
}

myapi.return_value = api_response

result = production_code()

assert result == "value37"
```

^ 如果你的 `production_code` 方法只使用 field37 会很烦人,对吧?

当然,你可以在测试中仅定义 field37,但如果日志或其他与此测试无关的东西使用另一个字段,它也必须在那里,即使它与此测试无关。

## 这更漂亮


```
api_response = jabstract({
"field1": "value1",
"field2": "value2",
....
"field37": "value37",
....
"field7632": "value7632"
})

def test_something()
myapi.return_value = api_response(field37="value37")

result = production_code()

assert result == "value37"
```

^ 测试变得如此之美!

# 使用方法

在某个地方声明你的 json 响应

```
from jabstract import jabstract

api_response = jabstract({
... 类 json 有效载荷 ...
})
```

然后在测试中使用它,只需定义相关的字段

```
.return_value = api_response(
key=value
)
```

它甚至支持复杂的有效载荷!

```
api_response = jabstract({
"client": {
"name": "John doe",
"email": "johndoe@example.org"
}
})

.return_value = api_response(
client=dict(name="Foobar")
)
```

\* 注意,`response["client"]["email"]` 将保持其默认值。

# 最佳实践

使用 jabstracted 有效载荷的测试应仅定义与测试相关的部分,不多也不少,以便肉眼可以明显看出值的来源

让我们测试这段代码
```
def name_getter(payload)
return payload["client"]["name"]
```

## **好** 示例
```
api_response = jabstract({
"client": {
"name": "John doe",
"email": "johndoe@example.org"
}
})

def test_name_getter()
payload = api_response(client=dict(name="Baboon 2.0"))

assert name_getter(payload) == "Baboon 2.0"
```

**评论员说** : 哦,所以它从有效载荷中获取客户的名称... +2

## ~~BAD~~ 示例

```
api_response = jabstract({
"client": {
"name": "John doe",
"email": "johndoe@example.org"
}
})

def test_name_getter()
负载 = api_response()

断言 name_getter(负载) == "John Doe"
```

**审稿人表示**:这家伙是谁啊... 点击负载... 哦,我明白了... 嗯,+1

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

jabstract-0.1.3.tar.gz (8.1 kB 查看哈希值)

上传时间

由以下支持