36、面向对象程序测试:从基础到实践

面向对象程序测试:从基础到实践

1. 测试跳过与预期失败

在测试过程中,有时我们需要根据特定条件跳过某个测试方法或函数。 py.test 提供了一个便捷的装饰器来实现这一点。这个装饰器接受一个字符串,该字符串可以包含任何能计算为布尔值的可执行 Python 代码。例如,下面的测试只会在 Python 3 或更高版本上运行:

import py.test
@py.test.mark.skipif("sys.version_info <= (3,0)")
def test_python3():
    assert b"hello".decode() == "hello"

py.test.mark.xfail 装饰器的行为类似,但它将测试标记为预期失败,类似于 unittest.expectedFailure() 。如果测试成功,它将被记录为失败;如果测试失败,则会被报告为预期行为。对于 xfail ,条件参数是可选的;如果未提供,测试将在所有条件下都被标记为预期失败。

2. 模拟昂贵对象

有时候,我们要测试的代码需要一个难以构造或成本高昂的对象。这可能意味着我们的 API 需要重新设计,以拥有更易于测试(通常也更易用)的接口。但有时我们会发现自己在编写测试代码时,需要大量的样板代码来设置与被测试代码只是间接相关的对象。

例如,我们有一段代码用于在键值存储(如 Redis 或 Memcache)中跟踪航班状态,以便存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值