如何使以下代码更加 Pythonic?所以我可以将 if/else 和 2 assert 语句合并为一行?
@pytest.mark.parametrize('para', [1, -1, 0])
def test_xxxx(self, para):
def test(value):
return False if value >= 0 else True
if para >= 0:
assert test(para) is False
else:
assert test(para) is True
Run Code Online (Sandbox Code Playgroud)
明确并简单地写出包含输入和预期输出的 3 个断言(注意:我将你的函数放在你的测试之外,并给了它一个更清晰的名字)。
def my_func(value):
return False if value >= 0 else True
def test_my_func(self):
assert my_func(1) is False
assert my_func(-1) is True
assert my_func(0) is True
Run Code Online (Sandbox Code Playgroud)
这是“pythonic”,因为正如 PEP-8 所说,“显式总是比隐式更好”。在处理测试时,编写尽可能少的功能代码比编写更少的行更重要。
三个显式断言比古怪的参数化循环或试图使其成为单行的失败的可能性要小得多。
| 归档时间: |
|
| 查看次数: |
18200 次 |
| 最近记录: |