除了手动注册标记之外,pytest 还内置了一些标记可直接使用,每种内置标记都会用例带来不同的特殊效果,本文先介绍 3 种。
1. skip
skip 标记通常用于忽略暂时无法执行,或不需要执行的用例。
pytest 在执行用例时,如果发现用例有 skip 标记会无条件跳过,从而避免执行。
下面这个示例中,为用例使用了skip标记
执行结果如下:
图 1.skip 标记使用例被跳过执行
2. skipif
skipif 标记通常用于动态判断是否执行的用例。
pytest 在执行用例时,如果发现用例有 skipif 标记,会判断标记中的表达式:
如果为真:跳过执行
如果为假:正常执行
下面这个示例中,为用例使用了skipif标记
执行结果如下:
图 2. 条件为真时跳过执行
将 skipif 条件改为假
可以正常执行了
图 3. 条件为假时跳过执行
3. xfail
xfail 标记用来改变用例的预期结果。
一般来说,用例的预期结果执行过程中没有任何异常、错误。但是某些情况下可能预期用例执行过程中出现异常(例如断网)。
pytest 在执行用例时,如果发现用例有 xfail 标记:
如果出现异常,将结果改为 xfailed,意外预期内的失败
如果没有异常,将结果改为 xpassed,以为预期外的通过
创建三个用例,分别实现正常的通过、预期内外的失败,预期外的通过
# tests/test_mark_skipif.yaml
test_name: 失败的用例steps: - request: method: get url: http://x1x2c3x5.x6 # 错误的地址,注定失败
---test_name: 预期内的失败mark: - xfail # 通过标记预期失败steps: - request: method: get url: http://x1x2c3x5.x6 # 错误的地址,注定失败
---test_name: 预期外的通过mark: - xfail # 通过标记预期失败steps: - request: method: get url: https://www.baidu.com # 正确的地址会成功
执行结果如下:
图 4. 预期内的失败与预期外的通过
领取专属 10元无门槛券
私享最新 技术干货