可覆盖 json 固定值的测试工具
项目描述
[](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
欢迎单元测试者!
## 这不是很好
```
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ce86fffc005d6d11b878d2e779fae310b839d556958c71d2e0e0453e78a2da5 |
|
MD5 | b3ca91b1e2a18870dcdc0c4531f53622 |
|
BLAKE2b-256 | 039fd1c4df3c2951dc9f5681d02515b3a42db4588740c51e54dddd49d1d2908d |