pytest的安装和介绍和 Exit Code 含义

pytest


准备工作(在cmd里):

1安装

pip install -U pytest

2验证安装

pytest --version # 会展示当前已安装版本

3其他的

显示可用的内置函数参数

pytest --fixtures

通过命令行查看帮助信息及配置文件选项

pytest --help
一、pytets框架中的约束

所有的单测文件名都需要满足test_.py格式或_ test.py格式。
在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
断言必须使用assert

二、arrtest断言语句
  • pytest中的assert是一种断言语句,用于检查测试结果是否符合预期。它用于在测试代码中判断某个条件是否为真,如果条件为假,则会抛出一个AssertionError异常,并且测试将被标记为失败。
import pytest


def test_a():
    print("--tast_a")
    assert 1


def test_b():
    print("--test_b")
    assert 0


def add(a, b):
    return a + b


def test_add():
    assert add(2, 3) == 5
    assert add(0, 0) == 0
    assert add(-1, 1) == 0


if __name__ == '__main__':
    pytest.main("-s test_abc.py")
  • 如果其中任何一个assert语句失败,测试将被标记为失败,并且会显示相应的错误消息。

    最后用的是pytest的测试类主函数

    命令行模式(编译器中的终端)

    pytest 文件路径/测试文件名
    例如:pytest ./test_abc.py
    

    请添加图片描述

三、pytest中测试类主函数

在main()中传参就相当于输出了pytest -*

可以多个传参:

eg:

pytest.main(["-s", "-x"])

main() 函数如果不带任何参数,那么执行的效果跟我们在 cmd 直接运行 pytest 命令一样,默认运行的是当前目录及子目录的所有文件夹的测试用例。

-m=xxx: 运行打标签(装饰器:@pytest.mark.xx)的用例

-reruns=xxx:失败重新运行

-q: 安静模式, 不输出环境信息

-v: 丰富信息模式, 输出更详细的用例执行信息

-s: 显示程序中的print/logging输出

-k:可以使用and、not、or等逻辑运算符,区分:匹配范围(文件名、类名、函数名)

-x: 出现一条测试用例失败就退出测试。调试阶段非常有用

–resultlog=./log.txt 生成log

–junitxml=./log.xml 生成xml报告

1、 -s的作用
  • 显示测试函数的打印和输出,默认情况下pytest会隐藏来保持测试报告的整洁性。但是,有时候我们需要查看测试函数中的打印输出,以便进行调试或查找问题。-s就是让他们显示在控制台上。

  • 上面的代码测试结果中显示test_a、b的输出

请添加图片描述

0、 Pytest Exit Code 含义清单

测试结束后最后一行会出现with exit code *,其中含义:

  • Exit code 0 所有用例执行完毕,全部通过
  • Exit code 1 所有用例执行完毕,存在Failed的测试用例
  • Exit code 2 用户中断了测试的执行
  • Exit code 3 测试执行过程发生了内部错误
  • Exit code 4 pytest 命令行使用错误
  • Exit code 5 未采集到可用测试用例文件
2、-m的作用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、-q的作用

只显示测试结果的总结,不输出环境信息

试了一下没看出区别下次学习的时候研究一下

4、-v的作用
5、-–resultlog=./log.txt的作用
6、-reruns的作用
7、–junitxml=./log.xml的作用
8、-k
9、-x
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
pytest是一种基于Python语言的测试框架,它提供了丰富的功能和易于使用的语法,使得编写、运行和管理测试变得更加简单和高效。pytest支持自动发现测试文件和测试函数,并自动执行它们,同时还支持参数化、fixture、插件等高级功能。 下面是pytest的详细介绍和使用方法: 一、安装pytest 可以使用pip命令来安装pytest: ```python pip install -U pytest ``` 二、编写测试用例 pytest的测试用例文件必须以test_开头或者以_test结尾,例如: ```python # test_sample.py def func(x): return x + 1 def test_answer(): assert func(3) == 4 ``` 这是一个简单的测试用例,它测试了一个函数的返回值是否正确。使用assert语句来判断函数返回值是否符合预期。 三、运行测试用例 可以使用pytest命令来运行测试用例: ```python pytest ``` pytest会自动发现所有以test_开头或者以_test结尾的测试文件,并执行其中的测试函数。如果测试通过,pytest会输出一条绿色的消息,否则会输出一条红色的消息。 四、使用fixture fixture是pytest的一个高级功能,它可以在测试函数运行之前执行一些准备工作,比如创建数据库连接、初始化测试数据等。可以使用@pytest.fixture装饰器定义一个fixture,例如: ```python # conftest.py import pytest import smtplib @pytest.fixture(scope="module") def smtp_connection(): smtp_connection = smtplib.SMTP("smtp.gmail.com", 587, timeout=5) yield smtp_connection smtp_connection.close() # test_smtplib.py def test_ehlo(smtp_connection): response, msg = smtp_connection.ehlo() assert response == 250 ``` 这个例子定义了一个smtp_connection的fixture,它在测试函数运行之前创建一个SMTP连接,并在测试函数运行之后关闭连接。测试函数可以使用smtp_connection这个fixture来获取SMTP连接,并进行测试。 五、使用参数化 pytest支持参数化测试,可以使用@pytest.mark.parametrize装饰器来定义多组输入和输出,例如: ```python # test_parametrize.py import pytest @pytest.mark.parametrize("test_input,expected_output", [ ("3+5", 8), ("2+4", 6), ("6*9", 42), ]) def test_eval(test_input, expected_output): assert eval(test_input) == expected_output ``` 这个例子定义了一个test_eval的测试函数,它使用了@pytest.mark.parametrize装饰器来定义多组输入和输出。pytest会自动运行每组输入和输出,如果测试通过,则会输出一条绿色的消息。 六、使用插件 pytest支持插件,可以通过安装不同的插件来扩展pytest的功能。可以使用pytest --help命令查看所有可用的插件。 以pytest-html插件为例,它可以生成一个HTML格式的测试报告。可以使用pip命令安装pytest-html插件: ```python pip install pytest-html ``` 安装完成后,可以使用pytest --html=report.html命令来生成测试报告,例如: ```python pytest --html=report.html ``` 这个命令会生成一个名为report.html的HTML文件,包含了测试结果和统计信息。测试报告可以在浏览器中打开查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JC03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值