【python-pytest】基础知识(安装,命名,运行,前置/后置方法)

前言:介绍一下pytest框架的安装方式,命名规则及三种运行方式,常用命令参数,前置、后置方法

目录

一、pytest安装

1.1 命令行方式

1.2 pycharm添加

二、命名规范

2.1 创建pytest文件

2.2 创建测试类

2.3 创建测试方法

三、运行方式

3.1 pycharm运行

 3.2 命令行运行(包含常用命令参数)

3.3 main方法运行

四、前置方法及后置方法

4.1 前置方法

4.2 后置方法


一、pytest安装

1.1 命令行方式

用管理员权限打开cmd窗口,执行命令:pip install pytest

1.2 pycharm添加

在pycharm中点击File-->settings-->Project-->Python Interpreter-->点击+号-->搜索pytest-->最后点击Install Package等待安装完成。

二、命名规范

2.1 创建pytest文件

测试用例文件命名必须以 test_开头或者以_test结尾。

2.2 创建测试类

测试类命名必须以Test开头。
tips: 测试类的不应该有构造函数。可创建不同文件夹去放置:测试用例文件,测试函数。

2.3 创建测试方法

  • 测试方法必须以test_开头,否则pytest无法识别
  • 测试方法执行顺序:遵循ascii码的顺序,建议取test_01,test_02.

三、运行方式

3.1 pycharm运行

直接在python文件中右键点击run执行。

注意点:

  • pytest框架会按照鼠标光标放置位置执行相应测试方法,如果要执行当前类中所有方法,需要将光标放在类名那一行。
  • pycharm会自动识别是pytest框架运行,如果不是的话可更改pycharm默认执行方式,点击File-->settings-->Tools-->Python integrated Tools-->Testing-->选择要使用的Default test runner(最新版的pycharm支持自动检测了,老版的话就要自己选了)如图:

 3.2 命令行运行(包含常用命令参数)

在python文件中右键点击Open In,选择Terminal,会在下面打开控制台,在其中输入命令即可执行,如图:pytest 文件名.py 执行该文件中所有测试方法

tips:输文件名的时候可使用tab键。

常用命令行及参数(参数在文件名前后不影响):

  1. pytest    执行全部当前路径下的所有测试
    1. Tips: 如果在pytest.ini文件中已经指定了路径或相关的内容,执行命令pytest会先去检查pytest.ini文件中有没有约束限制,即所有执行方法都要受到ini文件的参数设置的约束。
  2. pytest 文件名.py     执行该文件中所有测试方法
  3. pytest ./路径名称    执行指定路径下的测试
  4. pytest ./路径/文件名.py::类名/函数名   指定运行某个类或某个方法:pytest test_mod.py::TestClass::test_method
  5. -s   输出文件中的打印信息
  6. -v   输出用例更加详细的执行信息,比如用例所在的文件及用例名称,脚本执行状态等
  7. -m    ”标记“ 说明:执行特定的测试用例。
    1. 例如测试方法上面加了@pytest.mark.smoke
    2. pytest -m smoke 只执行带标签的方法
  8. -vs   可以打印出skip的理由
  9. -k   可以执行指定路径下含有“关键字内容”的所有文件或类或方法:pytest ./路径名称 -k "关键字"
    1. 但是pytest.ini文件的指定名称只能支持前缀:xxx*
  10. -x   遇到错误停止:pytest -x
  11. --maxfail=num   错误用例达到次数停止:pytest --maxfail=2
  12. --help 帮助:pytest --help

3.3 main方法运行

与命令行的语法类似

实例:注意括号,方括号的使用

if __name__ == '__main__':

    pytest.main(['文件名.py','-s','-v'])

四、前置方法及后置方法

4.1 前置方法

前置方法是每个测试方法开始前都需要进行的处理方法,分为四类

  • setup_function:只对普通方法有效
  • setup_method:只对类内部的方法有效
  • setup_class:只对类有效,并且要放在类内部
  • setup_method:对py文件有效

4.2 后置方法

每个测试方法执行后,要完成一些回收工作,和setup对应

  • teardown_function
  • teardown_method
  • teardown_class
  • teardown_method
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
pytest 中,可以使用装饰器 `@pytest.fixture` 来定义测试用例的前置后置操作。 前置操作需要在测试用例执行前完成,可以使用 `@pytest.fixture(scope="function")` 来定义作用域为函数级别的前置操作。例如: ```python import pytest @pytest.fixture(scope="function") def setup(): print("\nsetup") def test_case1(setup): print("test_case1") def test_case2(setup): print("test_case2") ``` 在这个例子中,`setup` 函数被定义为函数级别的前置操作,即每个测试用例执行前都会执行一次。`test_case1` 和 `test_case2` 都有一个参数 `setup`,这个参数是用来调用 `setup` 函数的。 后置操作需要在测试用例执行后完成,可以使用 `yield` 和 `addfinalizer` 来定义作用域为函数级别的后置操作。例如: ```python import pytest @pytest.fixture(scope="function") def setup(): print("\nsetup") yield print("\nteardown") def test_case1(setup): print("test_case1") def test_case2(setup): print("test_case2") ``` 在这个例子中,`setup` 函数被定义为函数级别的前置后置操作,即每个测试用例执行前都会执行一次,执行完测试用例后也会执行一次。`yield` 前面的代码是前置操作,`yield` 后面的代码是后置操作。通过 `yield` 可以将控制权交给测试用例执行,测试用例执行完后再执行后置操作。如果需要在测试用例执行后执行多个后置操作,可以使用 `addfinalizer`,例如: ```python import pytest @pytest.fixture(scope="function") def setup(request): print("\nsetup") def teardown(): print("\nteardown1") request.addfinalizer(teardown) def teardown2(): print("\nteardown2") request.addfinalizer(teardown2) def test_case1(setup): print("test_case1") def test_case2(setup): print("test_case2") ``` 在这个例子中,定义了两个后置操作 `teardown1` 和 `teardown2`,它们都会在测试用例执行完后执行。可以使用 `request.addfinalizer` 将这些后置操作添加到 `request` 对象中,这样它们就会按照添加的顺序执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BetterFate!

爱你哦!

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

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

打赏作者

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

抵扣说明:

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

余额充值