• 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_’ 开头的文件;
    经过修改文件名,我们再进行尝试:

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

  • 相关阅读:
    leetcode------Palindrome Number
    leetcode------Minimum Depth of Binary Tree
    leetcode------Binary Tree Level Order Traversal II
    leetcode------Plus One
    leetcode------Plus One
    leetcode------Min Stack
    leetcode------Binary Tree Level Order Traversal
    递归树与非递归树的不同实现【转载,个人感觉写的比较好的一篇,值得去思考】
    leetcode------Compare Version Numbers
    leetcode------Majority Element
  • 原文地址:https://www.cnblogs.com/saixuyu/p/13449543.html
Copyright © 2020-2023  润新知