pytest html报告怎么有些日志未记录 pytest log_py文件运行


用例入门

下面是一个可以通过的测试用例

def test_passing():    assert (1,2,3) == (1,2,3)

pytest test_one.py来运行,下图是输出结果


pytest html报告怎么有些日志未记录 pytest log_py文件运行_02


输出信息中,test_one.py后方的一个点号表示:运行了一个测试用例,且测试通过,在pytest后面几个-v,可以查看详细信息。


pytest html报告怎么有些日志未记录 pytest log_测试用例_03


下面再看一个测试失败的例子:

def test_passing():    assert (1,2,3) == (3,2,1)


pytest html报告怎么有些日志未记录 pytest log_搜索_04


pytest有一块专门的区域显示测试失败的信息,能准确的指出失败的原因:At index 0 diff: 1 != 3。

使用-v查看详细错误信息


pytest html报告怎么有些日志未记录 pytest log_搜索_05


详细的错误信息中,pytest添加了几个脱字符(^),准确的指出了前后的区别。

运行pytest

如果不提供任何参数,pytest会在当前目录以及子目录下寻找以test_开头或以_test结尾的测试函数测试文件,然后运行搜索到的测试代码。如果提供了一个或对个文件名、目录名,会逐个查找并运行所有测试,为了搜索到所有的测试代码,pytest会递归比那里每个目录及其子目录。


pytest html报告怎么有些日志未记录 pytest log_子目录_06


pytest html报告怎么有些日志未记录 pytest log_测试用例_07


只要遵循pytest的命名规则,pytest就能自动搜索到待执行的测试用例,

  • 测试文件应当命名为test_.py或者_test.py
  • 测试函数、测试类方法应当命名为test_
  • 测试类应该命名为Test

pytest执行完控制台输出的内容都是什么

test_three.py文件中有两个测试用例,运行一下后控制台的输出,依次为例来介绍


pytest html报告怎么有些日志未记录 pytest log_搜索_08


  • 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

表示测试通过的数量以及这段会话耗费的时间,如果存在未通过的用例,也会在这里标记出来。