本文节选自霍格沃玆测试学院内部教材,文末链接进阶学习.
简介
pytest 是一个成熟的全功能 Python 测试工具,可以帮助您编写更好的程序。它与 Python 自带的 Unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容 unittest 框架。pytest 有以下实用特性:
- pytest 能够支持简单的单元测试和复杂的功能测试;
- pytest 本身支持单元测试;
- 可以结合 Requests 实现接口测试;
- 结合 Selenium、Appium 实现自动化功能测试;
- 使用 pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。工作中一般会使用持续集成来完成代码集成到主干分支之后的回归测试,通过自动化测试的手段来实现产品的快速迭代,同时还能保证产品的高质量。
- pytest 支持 315 种以上的插件;
参考网站:
http://plugincompat.herokuapp.com/
https://docs.pytest.org/
安装
pip install -U pytest
查看版本
pytest --version
用例的识别与运行
用例编写规范:
- 测试文件以 test_ 开头(以 _test 结尾也可以)
- 测试类以 Test 开头,并且不能带有 init 方法
- 测试函数以 test_ 开头
- 断言使用基本的 assert 即可
创建一个 python 文件,命名以 test_ 开头(或者以 test 结尾),创建测试方法以 test 开头,测试类需要以 Test 开头。创建文件名为 test_add.py 文件,代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def add(x, y):
return x + y
def test_add():
assert add(1, 10) == 11
assert add(1, 1) == 2
assert add(1, 99) == 100
class TestClass:
def test_one(self):
x = "this"
assert "h" in x
def test_two(self):
x = "hello"
assert hasattr(x, "check")
运行 test_add.py 文件,在命令行进入到这个文件所在的路径,可以直接使用 pytest 命令运行,pytest 会找当前目录以及递查找子目录下所有的 test_*.py 或 *_test.py 的文件,把其当作测试文件。在这些文件里,pytest 会收集符合编写规范的函数,类以及方法,当作测试用例并且执行,执行如下:
$ pytest
....
test_add.py ..F [100%]
....
self = <test_cases.test_add.TestClass object at 0x1091810d0>
def test_two(self):
x = "hello"
> assert hasattr(x, "check")
E AssertionError: assert False
E + where False