8.pytest安装和入门

1安装

pip install -U pytest

2.第一个简单的测试

test_sample.py

# -*- coding:utf-8 -*-
import pytest


# 求和方法
def add(x, y):
    return x+y


def test_answer():
    assert add(3, 1) == 5

在命令行执行pytest
pytes`将在当前目录及其子目录中运行test _ * .py或* _test.py形式的所有文件。

8.pytest安装和入门_第1张图片
image.png

由测试报告可知,add(3,1)方法得到的结果是4,与断言assert 不符

3.断言引发异常

使用raises可以帮助我们断言某些代码会引发某个异常,新建一个sysexit_test.py文件,输入以下代码:

# -*- coding:utf-8 -*-
import pytest

def f():

    raise RuntimeError()  # 抛出RuntimeError异常

def test_mytest():
    with pytest.raises(RuntimeError):  # 断言RuntimeError异常   
        f()

if __name__ == '__main__':
    f()

通过‘安静’报告模式执行测试功能


image.png

虽然f()函数抛出了RuntimeError异常,但是该测试用例不会标记为失败。
我们将f()抛出的异常改为ImportError

def f():

    raise ImportError()  # 抛出ImportError异常
8.pytest安装和入门_第2张图片
image.png

测试用例标记了ImportError异常。
注:-q 为quiet。表示在安静的模式输出报告诉。加不加这个参有什么区别呢? 读者可以对比一下两次输出的日志。其实,就是少了一些pytest的版本信息。


image.png

4.测试类

pytest发现遵循其Python测试发现约定的所有测试,因此它找到两个test_前缀函数。没有必要继承任何东西。我们可以通过传递文件名来运行模块:

8.pytest安装和入门_第3张图片
image.png

由测试结果可知,一条通过,一条失败。

5.请求功能测试的唯一临时目录

fixture是pytest中的一个特性,fixture可以请求任意资源,用文字不太好理解,我们就通过实例来理解吧。首先,通过以下命令可以找出所有pytest内置的fixture:

pytest --fixtures

tmpdir这个内置的fixture来演示,tmpdir能返回一个唯一的临时目录路径,新建一个test_tmpdir.py文件,输入以下代码:

# -*- coding:utf-8 -*-

def test_needsfiles(tmpdir):
    print tmpdir
    assert 0
8.pytest安装和入门_第4张图片
image.png

你可能感兴趣的:(8.pytest安装和入门)