pytest - Getting Start

前言

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

pytest简介

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

Getting start

pytest安装

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

python 复制代码
pip install pytest

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

python 复制代码
pytest --version
pytest 6.2.4

第一个测试

可以通过四行代码为一个函数创建简单的测试。

python 复制代码
# test.py
def func(x):
    return x+1


def test_answer():
    assert func(5) == 7

下面就可以执行pytest命令来测试功能。

100%是指运行所有测试用例的整体进度,完成之后,pytest会显示一个失败报告,指出具体错误原因。pytest可以指定文件进行测试,更多的时候pytest会运行当前目录和子目录中的所有test_*.py或者*_test.py形式的文件。

在类中进行多个测试

如果编写了多个测试用例,可以将多个测试用例放在同一个类中,但是需要确保类型的前缀是Test,否则将会被pytest跳过。

python 复制代码
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_前缀的方法执行。

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个失败信息时停止继续测试。

python 复制代码
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,,由模块名、类名、函数名等,每个部分使用::分隔。

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

pytest选项

-r选项可以用于在测试会话结束时显示更加剪短的测试摘要信息,在大型的测试用例中可以非常清晰的获取所有失败、跳过等信息。-r参数可以和下面其他选项结合使用,输出不同的结果信息。

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

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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
古希腊被code拿捏的神6 小时前
【Flutter】面试记录
flutter·面试·职场和发展
凌肖战9 小时前
力扣网编程150题:加油站(贪心解法)
算法·leetcode·职场和发展
Memories off15 小时前
字节跳动-筋斗云面试记录
面试·职场和发展
车载测试工程师17 小时前
汽车功能安全系统阶段开发【技术安全方案TSC以及安全分析】5
功能测试·网络协议·安全·车载系统·汽车
程序员小白条17 小时前
我的第二份实习,学校附近,但是干前端!
java·开发语言·前端·数据结构·算法·职场和发展
趣多多代言人1 天前
从零开始手写嵌入式实时操作系统
开发语言·arm开发·单片机·嵌入式硬件·面试·职场和发展·嵌入式
大刘讲IT1 天前
精益管理与数字化转型的融合:中小制造企业降本增效的双重引擎
经验分享·程序人生·制造·传媒·零售·交通物流
一个处女座的测试2 天前
Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
python·mysql·pytest
开开心心就好2 天前
高效报价软件,简化商铺定价流程
服务器·数据库·安全·面试·职场和发展·电脑·symfony