python之用例定制化执行,mark是核心

1.执行全部的用例

在我们对环境初始化和定制化清除以后,我们可以通过pytest.fixture去操作执行用例。根据命令: fixture(scope='function',params=None,autouse=False,ids=None,name=None)去对方法、类、模块、包进行调用。
新增configtest.py文件

import pytest
import os
@pytest.fixture(scope='function',autouse=True)
def start_running():
  print('---接口自动化开始执行---')
#测试报告用例数据清除
try:
    for one in os.listdir('../report/tmp'):
        if 'json' in one or 'txt' in one :
            os.remove(f'../report/tmp/{one}')
except:
    print('第一次执行用例,还没有生成过报告')
yield
print('---接口自动化结束执行---')

注意:如果有多个.py文件需要调用同一方法,将方法写入conftest.py配置文件,test_xxx.py文件会被自动被pytest进行搜索执行。

2. 定制化用例执行

目前执行全部用例已经实现,但是需要对特定的业务进行测试,需要筛选出对应的业务模块部分测试。
输入命令,执行全部用例命令:

pytest.main(['test_shop.py','-s'])

定制化命令,执行组装后的流程用例:
输入定制化命令,执行定制化的用例命令:

@pytest.mark.shop
@pytest.mark.shop_list
  • -m 选择对应的标签

    '一个':'-m','lesson_add'
    '多个':'-m','lesson_add or lesson_list''
    '排除法':'-m','not lesson_add'
    '排除法 多个':'-m','not lesson_add or lesson_list'

  • -k 匹配用例名称
    匹配:可全名,也可以模糊
    lesson_1.py lesson_2.py---需要制定运行2个

    pytest -k lesson
    
  • -v节点-多层化-#测试文件::测试类::测试方法
    test_lession.py::TestLession::test_lesson_add

    pytest -v
    

test_lesson.py::TestLesson::test_lesson_add

  • -sq:简化打印消息
    -s 输出打印
    -q 简化打印信息

  • 跳过/条件跳过
    在自动化测试过程中,经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致的一些用例执行不了,就可以通过skip用例,进行注释或删掉,后面还要进行恢复操作。
    pytest.main('-rs','test01.py')

test_lesson.py::TestLesson::test_lesson_add
对应的配置文件,pytest.ini:

[pytest]
markers=
  login:Run login case
  myshop:Run myshop case

3.pytest数据驱动:pytest.mark.parametrize()

pytest中数据驱动需要一个装饰器pytest.mark.parametrize(参数1,参数2),里面传多个值第一个参数是字符串,第二个参数是列表,列表里面嵌套元组。

ex:
@pytest.mark.parametrize('inBody,reqData',get_excel_data('登录模块','Login'))
显示结果:
({'username': 'sa122', 'password': '124'}, {'code': 9999, 'data': '', 'flag': '12', 'msg': '输入的密码错误!', 'success': False})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容