Pytest框架 — 13、Pytest的标记(四)(分组执行)

打印 上一主题 下一主题

主题 883|帖子 883|积分 2653

目录

1、前言

在自动化测试工作中我们有时候并不需要测试所有的测试用例,比如在冒烟测试阶段,我们只需要测试基本功能是否正常就可以了。在pytest中提供了mark标记功能来实现分组执行。
2、mark的使用

步骤:

  • 在pytest.ini中注册标记(名称可自定义)
  • 使用@pytest.mark.上一步注册的名称标记需要执行的用例
  • 执行
(一)注册自定义标记

在pytest.ini中添加markers
  1. [pytest] # 固定的section名
  2. markers= # 固定的option名称,注意缩进。
  3.     标签名1: 标签名的说明内容。
  4.     标签名2: 不写也可以
  5.     标签名N
复制代码
示例:
  1. [pytest]
  2. markers =
  3.     smoke: 冒烟测试
  4.     back
复制代码
(二)在测试用例上标记

通过@pytest.mark.标记名标记要测试的用例。
示例:
  1. import pytest
  2. @pytest.mark.smoke
  3. def test_1():
  4.     print("测试1")
  5. @pytest.mark.back
  6. def test_2():
  7.     print("测试2")
  8. def test_3():
  9.     print("测试3")
复制代码
(三)执行

通过在命令行增加-m参数指定要测试的分组。
示例:
执行冒烟用例:pytest -vs xxx.py -m smoke
  1. """
  2. 执行结果
  3. collected 3 items / 2 deselected / 1 selected                                                                                                
  4. mark/mark/mark.py::test_1 测试1
  5. PASSED
  6. """
复制代码
执行回归用例:pytest -vs xxx.py -m back
  1. """
  2. 执行结果
  3. collected 3 items / 2 deselected / 1 selected                                                                                                
  4. mark/mark/mark.py::test_2 测试2
  5. PASSED
  6. """
复制代码
3、扩展

(一)在同一个测试用例上使用多个标记
  1. import pytest
  2. @pytest.mark.back
  3. def test_register():
  4.     # 注册
  5.     print("注册")
  6. @pytest.mark.smoke
  7. @pytest.mark.back
  8. def test_login():
  9.     # 登录
  10.     print("登录")
  11. @pytest.mark.back
  12. def test_logout():
  13.     # 注销
  14.     print("注销")
  15. @pytest.mark.smoke
  16. def test_add_cart():
  17.     # 加购物车
  18.     print("加购物车")
  19. @pytest.mark.smoke
  20. def test_place_order():
  21.     # 下单
  22.     print("下单")
  23. @pytest.mark.smoke
  24. @pytest.mark.pay
  25. def test_pay_order():
  26.     # 支付订单
  27.     print("支付订单")
复制代码
在执行时支持通过and,or,or来连接多个标记,如下

  • pytest -vs -m "smoke or pay" xxx.py,此时只有登录,加购物车,下单,支付订单这4个用例执行
  • pytest -vs -m "smoke and pay" xxx.py,此时只有支付订单这个用例执行
  • pytest -vs -m "not smoke" xxx.py,此时只有注册,注销这2个用例执行
(二)在测试类上使用标记
  1. import pytest
  2. @pytest.mark.smoke
  3. class TestLogin:
  4.     def test_login(self):
  5.         print("登录")
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表