【发布时间】:2019-01-20 08:32:25
【问题描述】:
我为 python/django API 编写了一个权限中间件。现在权限取决于 4 个不同属性的组合,我们称它们为 a b c and d
进一步的 c 和 d 可以是 1) 空 2) 单数或 3) 多个值,因此组合甚至会进一步增加。
最初,我决定编写一个测试用例,它会生成组合并使用真值表映射预期结果。
# Generate all possible combinations
possible_combinations = list(itertools.product([0, 1], repeat=len(possible_values)))
for combination in possible_combinations:
# Get expected result for this combination
expected_result = get_expected_result(
test_type=test_type, combination=combination, possible_values=possible_values)
根据组合值,设置为0或1我决定a b c and d的值
现在我作为一个新团队的一员来做这件事,团队成员对这种方法提出了批评,因为它不够精细,也没有遵循让测试用例做一件事的最佳实践。
我对最佳实践的看法是,它们应该非常清楚和明显地服务于目的,而目的可能取决于手头的任务或团队。在这种特殊情况下,团队成员没有提出为什么将这种特殊的测试用例写成细粒度的部分会有所帮助。
最终,我编写了多达 30 个测试用例,其中 80% 是冗余代码。
这场辩论是否有任何客观性,或者这是一个非常主观的呼吁?
【问题讨论】:
标签: django unit-testing django-rest-framework integration-testing pytest