pytest是一个可以轻松构建简单且可扩展测试用例的框架。本文通过一些小的单元测试和功能测试,来快速了解pytest的使用。
安装pytest
- 运行下面的命令安装pytest模块:
1
>pip install -U pytest # install -U 意思是更新xx模块
- 检查pytest是否安装成功:
1
>pytest --version
创建第一个testCase
创建一个文件,包含一个被测试函数和一个测试函数:
1 |
|
然后,在test_first_pytest.py
文件路径下,执行pytest命令:
1 |
|
可以看到,测试返回一个失败的报告,因为func(1)不等于3.
提示:可以使用
assert
语句来判断测试实际结果是否等于测试期望结果。 python语言的assert
语法为assert expression1 ["," expression2]
。expression1为要判断的表达式;experssion2为抛出异常时,要执行的表达式,可以显示报错具体信息。
运行多个testCase
pytest会在当前目录下和所有子目录下查找并执行所有名字为test_*.py
和*_test.py
的文件。
断言被测试函数抛出的异常
可以使用pytest.raises()
判断被测试函数抛出的异常是否是我们期望的异常类型:
1 |
|
使用pytest
执行test_pytest_raises.py
:
1 |
|
关于
with
的用法: 参考https://www.cnblogs.com/xiaxiaoxu/p/9747551.html 参考https://blog.csdn.net/qq_33961117/article/details/88948245
通过Class组织多个testCase
pytest可以很容易的使用一个Class来组织多个测试函数:
1 |
|
pytest会根据规则,自动寻找文件中所有test_
前缀的函数。所以无需子类继承。我们可以通过命令,指定运行一个py文件
1 |
|
使用内置的fixture(如tmpdir)
pytest
提供很多内建的fixture
,fixture可以用来请求任意资源。通过pytest --fixtures
命令可以列出pytest所有内建的资源。
我们以tmpdir
这个内置的fixtures来演示。tmpdir可以返回一个唯一的临时目录给测试函数调用:
1 |
|
在测试函数中,我们使用了tmpdir这个fixture(通过在测试函数中声明了tmpdir这个fixture)。pytest将在测试函数执行之前查找并调用fixture工厂来创建资源。运行代码:
1 |
|
可以通过print函数看到,tmpdir
创建了一个唯一的临时目录。我们测试的时候,可以将一些信息保存在这个目录。