pytest学习2-运行测试用例

一、收集规则

我们先来看一下官方文档(感觉应该是官方文档=.=)是怎么描述收集多个测试用例的:

pytest will run all files of the form test_*.py or *_test.py in the current directory and its subdirectories. More generally, it follows standard test discovery rules.

用蹩脚英语大致翻译一下:pytest,将会把当前目录和子目录下类似于“test_*.py”或者“*_test.py”这样以‘test_’开头或者‘_test’结尾的python文件,当作用例来运行。就一般而言,它遵循python测试用例设计(收集)规范。
这里的收集约定(规范)大致如下:

  • 如果没有特别指定参数,优先从配置 testpaths 指定的目录或者当前目录开始;
  • 依次向上递归寻找目录,除非使用正则类似的指定除外(这里好像就是指定某些特定的跳过,不收集);
  • 在上面找到的目录中,寻找里面以‘test_’开头或者‘_test’结尾的python文件;
  • 从这些python文件中,收集需要执行的测试项目:
    1)类外以 test 为前缀的函数或方法;
    2)以Test为前缀类(没有__init__方法)中,以 test 为前缀的函数或方法;
  • 在python中,pytest同样兼容unittest的相关的收集规定;

二、运行收集到的测试用例

上面我们已经收集到了需要执行的测试用例,现在我们想要让 pytest 去执行我们收集到的测试用例;
首先,我们先了解下 cmd 执行 pytest 用例的命令有哪些,一般来说有以下三种方法,如下:

pytest XX用例
py.test XX用例
python -m pytest XX用例

这里我们一般使用上面提到的第一个方法;
举个例子:我们这里写一个文件 test_sample.py 里面,放上一个待测的函数 func1(x),和一个测试用例 test_answer()。

# @File: test_sample.py
def func1(x):
    return x + 1

def test_answer1():
    assert func1(3) == 5

def test_answer2():
    assert func1(4) == 5

1)运行单个 py 文件:
我们运行 test_sample.py 这个文件里所有的用例,我们可以用如下命令:
pytest test_sample.py

2)运行一个文件夹中的测试用例:
我们运行 cases1 这个文件夹下面的测试用例,有两个py文件,我们来一起运行一下,在当前目录下执行下面的命令:


这里我们发现,提示没有发现测试用例,经过检查我们发现,上面的收集规则中,两个py文件并不是以 ‘test_’ 开头的文件;
经过修改文件名,我们再进行尝试:

可以看到,我们成功地运行了一个文件夹下面的两个文件;

原文地址:https://www.cnblogs.com/saixuyu/p/13449543.html