用例入门
下面是一个可以通过的测试用例
def test_passing(): assert (1,2,3) == (1,2,3)
pytest test_one.py来运行,下图是输出结果
输出信息中,test_one.py后方的一个点号表示:运行了一个测试用例,且测试通过,在pytest后面几个-v,可以查看详细信息。
下面再看一个测试失败的例子:
def test_passing(): assert (1,2,3) == (3,2,1)
pytest有一块专门的区域显示测试失败的信息,能准确的指出失败的原因:At index 0 diff: 1 != 3。
使用-v查看详细错误信息
详细的错误信息中,pytest添加了几个脱字符(^),准确的指出了前后的区别。
运行pytest
如果不提供任何参数,pytest会在当前目录以及子目录下寻找以test_开头或以_test结尾的测试函数测试文件,然后运行搜索到的测试代码。如果提供了一个或对个文件名、目录名,会逐个查找并运行所有测试,为了搜索到所有的测试代码,pytest会递归比那里每个目录及其子目录。
只要遵循pytest的命名规则,pytest就能自动搜索到待执行的测试用例,
- 测试文件应当命名为test_.py或者_test.py
- 测试函数、测试类方法应当命名为test_
- 测试类应该命名为Test
pytest执行完控制台输出的内容都是什么
test_three.py文件中有两个测试用例,运行一下后控制台的输出,依次为例来介绍
- test session starts
pytest为每段测试回话(session)做了明确的分割,一段回话就是pytest的一次调用,可能包括多个目录下被执行的测试用例。
- platform darwin -- Python 3.8.0, pytest-5.3.2, py-1.8.0, pluggy-0.13.1
运行设备的信息和环境信息,包括python、pytest版本,py和pluggy都是pytest的包,用于pytest的实现。
- rootdir: /Users/zhouyajun/PycharmProjects/geek/pytest_pratice/chapter1
rootdir是当前起始目录,是pytest搜搜测试代码的开始位置
- collected 2 items
搜索范围内找到两个测试用例
- tasks/test_three.py ..
tasks/test_three.py表示测试文件,每个测试文件的测试情况占据一行,两个点号表示两个测试用例都通过。
点号仅仅表示通过,Failure-失败,error-异常,skip-跳过,xfail-预期失败,xpass-预期失败。会被分别标记为F、E、s、x、X
- 2 passed in 0.01s
表示测试通过的数量以及这段会话耗费的时间,如果存在未通过的用例,也会在这里标记出来。