Python 测试:从基础到实践
1. 测试跳过与预期失败
在 Python 测试中,有时我们需要根据特定条件跳过某个测试方法或函数。 py.test 提供了一个便捷的装饰器 @py.test.mark.skipif 来实现这一功能。该装饰器接受一个字符串,其中可以包含任何能计算为布尔值的可执行 Python 代码。例如:
import py.test
@py.test.mark.skipif("sys.version_info <= (3,0)")
def test_python3():
assert b"hello".decode() == "hello"
此测试只会在 Python 3 或更高版本上运行。
另外, py.test.mark.xfail 装饰器的行为类似,但它将测试标记为预期失败,类似于 unittest.expectedFailure() 。如果测试成功,它将被记录为失败;如果测试失败,则会被报告为预期行为。在使用 xfail 时,条件参数是可选的;如果未提供,测试将在所有条件下都被标记为预期失败。
2. 模拟昂贵对象
在测试代码时,我们有时需要提供一个构造成本高或难以构造的对象。例如,有一个跟踪航班状态的代码,将航班状态存储在键值存储(如 Redis 或 Memcache)中:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



