pytest - Getting Start | Python 主题月

本文正在参加「Python主题月」,详情查看 活动连接html

微信公众号搜索【程序媛小庄】 - 没有白走的路,每一步都算数node

前言

项目开发中有不少的功能,一般开发人员须要对本身编写的代码进行自测,除了借助postman等工具进行测试外,还须要编写单元测试对开发的代码进行测试,经过单元测试来判断代码是否可以实现需求,本文介绍的pytest模块是一个很是好用的框架,不只支持简单的测试也支持应用中复杂的功能测试。python

pytest简介

这里引用pytest官方文档中的内容:pytest is a mature full-featured Python testing tool that helps you write better programs.web

Getting start

pytest安装

pytest的运行环境是:python3.6 3.7 3.8 3.9 pypy3.在命令行中运行下述命令安装pytest微信

pip install pytest
复制代码

安装完成以后运行下述命令检查是否安装成功:markdown

pytest --version
pytest 6.2.4
复制代码

第一个测试

能够经过四行代码为一个函数建立简单的测试。框架

# test.py
def func(x):
    return x+1


def test_answer():
    assert func(5) == 7
复制代码

下面就能够执行pytest命令来测试功能。函数

image-20210726105047982

100%是指运行全部测试用例的总体进度,完成以后,pytest会显示一个失败报告,指出具体错误缘由。pytest能够指定文件进行测试,更多的时候pytest会运行当前目录和子目录中的全部test_*.py或者*_test.py形式的文件。工具

在类中进行多个测试

若是编写了多个测试用例,能够将多个测试用例放在同一个类中,可是须要确保类型的前缀是Test,不然将会被pytest跳过。oop

class TestDemo:

    def test_one(self):
        x = 'this'
        assert 'h' in x

    def test_two(self):
        x = 'hello'
        assert hasattr(x, 'check')
复制代码

下面是使用pytest执行测试的结果,在类中编写测试须要注意两点:第一,类名必须有Test前缀,第二,在使用类进行测试时不须要实例化对象,pytest会自动找到test_前缀的方法执行。

image-20210726111914887

Usage and Invocations

Exit codes

不晓得有没有细心的小伙伴发现没有,在使用pycharm运行完成一段程序后,会显示Process finished with exit code 0,表示程序正常运行完毕了,在运行pytest时也会出现exit code,而且可能会出现大概6种不一样的exit code

exit code 0:全部的测试都已经收集而且成功经过

exit code 1:收集并运行了测试,可是有些测试失败了

exit code 2:测试执行过程当中被打断

exit code 3:执行测试时发生内部错误

exit code 4:pytest命令使用错误

exit code 5:没有收集测试

终止测试

pytest运行时能够经过命令控制在出现一个或者N个失败信息时中止继续测试。

pytest -x           # stop after first failure
pytest --maxfail=2  # stop after two failures
复制代码

指定/选择测试用例

pytest支持多种多方运行和选择测试用例。

测试指定py文件pytest test_mod.py

测试指定目录pytest /usr/local/testing/

经过节点id指定测试:每一个被收集的测试都会被分配一个惟一的nodeid,,由模块名、类名、函数名等,每一个部分使用::分隔。

运行模块中的指定的测试用例:pytest test_mod.py::test_func
运行类中的某个测试方法:pytest test_mod.py::TestClass::test_method

复制代码

pytest选项

-r选项能够用于在测试会话结束时显示更加剪短的测试摘要信息,在大型的测试用例中能够很是清晰的获取全部失败、跳过等信息。-r参数能够和下面其余选项结合使用,输出不一样的结果信息。

f:失败的
E:错误的
s:跳过的
x:失败的
p:经过的
复制代码

如仅查看失败和跳过的测试,能够执行:pytest -rfs

结语

文章首发于微信公众号程序媛小庄,同步于掘金

码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)

image.png

相关文章
相关标签/搜索