pytest介绍及安装
文章链接:https://mp.weixin.qq.com/s/mxCOVRIetU7efqMdseotkw
一. pytest介绍
pytest is a mature full-featured Python testing tool that helps you
write better programs. pytest is a framework that makes building simple
and scalable tests easy. Tests are expressive and readable—no
boilerplate code required.
—— 摘自 pytest 官方介绍,地址:http://www.pytest.org/en
pytest是一个成熟且功能齐全的Python测试工具,可以帮助您编写更好的程序。pytest是一个框架,它使构建简单且可伸缩的测试变得容易。测试应该是富有表现力和可读性的 —— 不需要样板代码。
以上即对pytest官方介绍的翻译,pytest具有以下一些特点:
1 它既是一个软件测试框架又是一款命令行工具;
2 简单容易上手;
3 可以自动发现测试用例并执行;
4 断言使用Python原生的assert语句,不需要记住self.assertEqual这样的名称;
5 支持运行unittest和nose编写的测试用例;
6 拥有丰富的插件体系结构,支持用户自行开发的插件。
二. 安装pytest
直接从官方PiPy源安装pytest即可,进入虚拟环境,输入以下安装命令:
安装命令:pip install -U pytest
接下来检查安装版本的正确性,显示安装pytest工具的版本信息:
输入命令:pytest --version
三. PyCharm配置
下面在PyCharm中新建项目及配置pytest。PyCharm 是一款由JetBrains开发的功能强大的Python
IDE(Integrated Development Environment
集成开发环境)工具,其提供了智能代码完成、代码检查、即时错误高亮显示和快速修复,以及自动代码重构和丰富的导航功能。
在PyCharm中选择“File-New Project”,弹出新建项目对话框后,依次选择新建一个纯Python项目,输入项目名称,选择前面我们已经建好的虚拟环境(pyenv_1)。
选择“File - Settings”,弹出设置页面后,选择“Tools - Python Integrated
Tools”进行Python集成工具的设置。在“Default test
runner”默认测试运行者处选择“py.test”,即后续将pytest作为默认的测试执行工具。
四. 一个简单的测试
下面我们新建一个简单的测试用例,并以pytest的方式执行先看看效果。新建一个普通的Python文件,命名为:test_01.py,输入以下代码:
def add(x, y):
return x + y
def test_add():
assert add(1, 9) == 10
首先定义了一个加法函数(add),返回两个参数相加之和。其次针对这个加法函数编写了一个测试用例(test_add),并通过Python原生的assert断言,断言调用该加法函数计算1加9之和预期是10。
这里的测试用例命名约定以“test_”开头,pytest会自动搜索并运行该命名格式的测试用例。
在PyCharm中右键点击“test_01.py”文件,从弹出的菜单中选择“Run 'py.test in test_01.python'”,即通过pytest运行选中的文件。
测试结果中显示pytest自动搜索到了一个测试项目,并自动运行了其中的测试用例,显示的执行进度达到了100%,执行结果显示该测试通过。文件名后面的点“.”也表示执行通过。
接下来修改前面的代码,我们再多加一个测试用例,看看执行结果有什么不同。
def add(x, y):
return x + y
def test_add1():
assert add(1, 9) == 10
def test_add2():
assert add(3, 0) == 3
执行结果中显示,发现了2个测试项目,而且显示了两个点“.”号,说明有两个测试用例均被执行通过。
前面的代码中,断言结果全部通过,这次我们再引入一个注定要失败的测试用例(断言3加0等于8):
def add(x, y):
return x + y
def test_add1():
assert add(1, 9) == 10
def test_add2():
assert add(3, 0) == 8
这次可以从结果中非常清楚的看到,一共两个测试条目,一个成功(用点表示),一个失败(用F表示),而且下面显示了具体失败的代码位置和异常类型。
——内容引自微信公众号《隔壁老王说测试》https://mp.weixin.qq.com/s/mxCOVRIetU7efqMdseotkw