Pytest测试框架

时间:2019-03-14
本文章向大家介绍Pytest测试框架,主要包括Pytest测试框架使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1..快速开始

简介

pytest测试框架可以让我们很方便的编写测试用例,这些用例写起来虽然简单,但仍然可以规模化以及编写更加复杂的测试用例。

官方文档:https://docs.pytest.org/en/latest/index.html

安装

pip install -U pytest

用下面的命令去检查一下pytest是否成功安装

$ pytest --version
This is pytest version 3.x.y, imported from $PYTHON_PREFIX/lib/python3.5/site-packages/pytest.py

快速开始

创建名为test_quick_start.py的文件,敲如下内容

def reverse(string):
    return string[::-1]

def test_reverse():
    string = "good"
    assert reverse(string) == "doog"

    another_string = "itest"
    assert reverse(another_string) == "tseti"

上面的代码做了2件事情

  • 定义了名为reverse(string)的全局函数,作用是把string反转并返回。比如输入"abc"会反转成"cba"
  • 定义了名为test_reverse()的函数,包含了2个断言,用来测试reverse()方法的正确性

在命令行中使用下面的命令去运行用例

pytest

结果应该大致如下

========================================================================= test session starts =========================================================================
platform darwin -- Python 2.7.12, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /Users/easonhan/code/testclass.net/src/pytest, inifile:
collected 1 item

test_quick_start.py .

====================================================================== 1 passed in 0.01 seconds =======================================================================

总结

这是最简单的单元测试实例,实现了用代码去测试代码的目的。

2.运行多个文件

背景

在现实的测试活动中,我们经常会定义多个用例文件,用来实现业务逻辑或其他逻辑上用例的物理分隔,比如

login_test.py # 登录相关功能的测试用例
cart_test.py # 购物车相关功能的测试用例
checkout_test.py # 结算相关功能的用例
order_test.py # 订单相关功能的用例

使用pytest可以很方便的执行批量执行一组文件中定义的用例。

潜规则

在批量执行用例之前,我们需要了解一下pytest的潜规则,注意,由于pytest可以支持丰富的定制选项,下面的潜规则是在没有定制的默认情况下的缺省规则

  • pytest会找当前以及递查找子文件夹下面所有的test_*.py*_test.py的文件,把其当作测试文件
  • 在这些文件里,pytest会收集下面的一些函数或方法,当作测试用例
    • 不在类定义中的以test_开头的函数或方法
    • 在以Test开头的类中(不能包含__init__方法),以test_开头的方法
  • pytest也支持unittest模式的用例定义

实例

新建test_calc.py文件,与上一节的test_quick_start.py放在同一文件夹下,敲入下面的内容

def add(x, y):
    return x + y

def test_add():
    assert add(1, 0) == 1
    assert add(1, 1) == 2
    assert add(1, 99) == 100

现在当前文件夹下应该有2个文件

test_calc.py
test_quick_start.py

运行

在当前文件夹敲下面的命令

pytest

结果大致应该如下所示

$ pytest
========================================================================= test session starts =========================================================================
platform darwin -- Python 2.7.12, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /Users/easonhan/code/testclass.net/src/pytest, inifile:
collected 2 items

test_calc.py .
test_quick_start.py .

====================================================================== 2 passed in 0.01 seconds =======================================================================

总结

上面的例子里

  • 所有以test_开头的py文件都被当成了测试文件
  • 所有测试文件中以test开头的方法被当成了测试用例执行