- 单元测试框架教程
- 单元测试框架 - 首页
- 单元测试框架 - 概述
- 单元测试框架 - 框架
- 单元测试框架 - API
- 单元测试框架 - 断言
- 单元测试框架 - 测试发现
- 单元测试框架 - 跳过测试
- 单元测试框架 - 异常测试
- 单元测试框架 - 时间测试
- 单元测试框架 - Unittest2
- 单元测试框架 - 信号处理
- 单元测试框架 - Doctest
- 单元测试框架 - Doctest API
- 单元测试框架 - Py.test 模块
- Nose 测试 - 框架
- Nose 测试 - 工具
- 单元测试框架资源
- 单元测试框架 - 快速指南
- 单元测试框架 - 资源
- 单元测试框架 - 讨论
单元测试框架 - Py.test 模块
2004年,Holger Krekel 将他的std包(其名称经常与 Python 附带的标准库混淆)重命名为(略微不那么令人困惑的)名称“py”。尽管该包包含多个子包,但现在几乎完全以其py.test框架而闻名。
py.test 框架为 Python 测试建立了新的标准,并且如今已成为许多开发人员的热门选择。它引入的优雅且符合 Python 风格的测试编写习惯用法使得测试套件能够以更紧凑的风格编写。
py.test 是 Python 标准 unittest 模块的无样板替代方案。尽管它是一个功能齐全且可扩展的测试工具,但它拥有简单的语法。创建测试套件就像编写一个包含几个函数的模块一样简单。
py.test 可以在所有 POSIX 操作系统和 WINDOWS(XP/7/8)上运行,并支持 Python 2.6 及更高版本。
安装
使用以下代码将 pytest 模块加载到当前 Python 发行版以及 py.test.exe 实用程序中。可以使用两者运行测试。
pip install pytest
用法
您可以简单地使用 assert 语句来断言测试期望。pytest 的 assert 内省将智能地报告 assert 表达式的中间值,使您无需学习JUnit 遗留方法的众多名称。
# content of test_sample.py def func(x): return x + 1 def test_answer(): assert func(3) == 5
使用以下命令行运行上述测试。测试运行完成后,控制台将显示以下结果:
C:\Python27>scripts\py.test -v test_sample.py ============================= test session starts ===================== platform win32 -- Python 2.7.9, pytest-2.9.1, py-1.4.31, pluggy-0.3.1 -- C:\Pyth on27\python.exe cachedir: .cache rootdir: C:\Python27, inifile: collected 1 items test_sample.py::test_answer FAILED ================================== FAILURES ===================== _________________________________ test_answer _________________________________ def test_answer(): > assert func(3) == 5 E assert 4 == 5 E + where 4 = func(3) test_sample.py:7: AssertionError ========================== 1 failed in 0.05 seconds ====================
也可以通过使用 –m 开关包含 pytest 模块,从命令行运行测试。
python -m pytest test_sample.py
在类中分组多个测试
当您开始拥有多个测试时,通常将测试在逻辑上分组到类和模块中是有意义的。让我们编写一个包含两个测试的类:
class TestClass: def test_one(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check')
将显示以下测试结果:
C:\Python27>scripts\py.test -v test_class.py ============================= test session starts ===================== platform win32 -- Python 2.7.9, pytest-2.9.1, py-1.4.31, pluggy-0.3.1 -- C:\Pyt on27\python.exe cachedir: .cache rootdir: C:\Python27, inifile: collected 2 items test_class.py::TestClass::test_one PASSED test_class.py::TestClass::test_two FAILED ================================== FAILURES ===================== _____________________________ TestClass.test_two ______________________________ self = <test_class.TestClass instance at 0x01309DA0> def test_two(self): x = "hello" > assert hasattr(x, 'check') E assert hasattr('hello', 'check') test_class.py:7: AssertionError ===================== 1 failed, 1 passed in 0.06 seconds ======================
广告