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形式的所有文件。
由测试报告可知,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()
通过‘安静’报告模式执行测试功能
虽然f()函数抛出了RuntimeError异常,但是该测试用例不会标记为失败。
我们将f()抛出的异常改为ImportError
def f():
raise ImportError() # 抛出ImportError异常
测试用例标记了ImportError异常。
注:-q 为quiet。表示在安静的模式输出报告诉。加不加这个参有什么区别呢? 读者可以对比一下两次输出的日志。其实,就是少了一些pytest的版本信息。
4.测试类
pytest
发现遵循其Python测试发现约定的所有测试,因此它找到两个test_
前缀函数。没有必要继承任何东西。我们可以通过传递文件名来运行模块:
由测试结果可知,一条通过,一条失败。
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