10.接口自动化测试学习-Pytest框架(2)

本文介绍了如何在pytest中使用mark标签管理和选择执行特定的模块、类、方法,以及如何通过-m选项指定标签进行过滤。同时讲解了如何使用skip和skipif进行条件跳过和配置pytest.ini以消除警告。
摘要由CSDN通过智能技术生成

1.mark标签

如果在每一个模块,每一个类,每一个方法和用例之前都加上mark标签,那么在pytest运行时就可以只运行带有该mark标签的模块、类、接口。

这样可以方便我们执行自动化时,自主选择执行全部用例、某个模块用例、某个流程用例

2.-m 选择对应的标签

一个:'-m','lesson_add(标签名)'
多个:'-m','lesson_add or lesson_list(标签名)'
排除法:'-m','not lesson_add(标签名)'
排除法多个:'-m','not (lesson_add or lesson_list(标签名))'

eg:只执行shop_list接口的相关用例

import pytest,allure,os
from libs.login import Login
from utils.handle_excel import get_excel_data
from utils.handle_path import report_path
from utils.handle_path import data_path
from common.baseApi import BaseAssert
#TestLogin继承BaseAssert

class TestShop(BaseAssert):
    @pytest.mark.parametrize('inBody,expData', get_excel_data('商铺模块', 'Listshop','请求参数','响应预期结果'))
    @pytest.mark.shop_list
    def test_shop_list(self,inBody,expData,shop_init):#shop_init初始化操作
        # 1.调用业务层封装的接口代码
        res=shop_init.query(inBody)
        # 2.断言实际返回结果与预期结果
        self.define_assert(res['code'],expData['code'])
  
if __name__ == '__main__':
    pytest.main([__file__,'-sv','-m','shop_list','--alluredir',report_path,'--clean-alluredir'])
    os.system(f'allure serve {report_path}')

如果出现如下图的警告,说明我们自己取得标签名系统不承认,则需要在ini文件中进行配置,在pycharm中安装ini插件
直接写mark标签,会有警告

pytest.ini—去除警告

[pytest]
markers=
    login: Run login case
    shop: Run shop case
    shop_list:Run shop_list case
    shop_update:Run shop_update case

3.pytest其他用法

-k:匹配用例名称

pytest -k shop #带有shop的接口用例都会执行
  • 匹配:可全名,也可以模糊
    若有lesson1.py lesson2.py
  • pytest -k lesson
    会运行两个文件

-v:节点(多层化)

pytest -v test_shop.py::TestShop::test_shop_list
  • ::代表层级,上述命令表示执行test_shop模块下的TestShop类里的test_shop_list中的全部用例
  • 示例:test_lesson.py::TestLesson::test_lesson_add
  • pytest -v test_lesson.py::TestLesson::test_lesson_add

-sq:简化打印信息

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

跳过/条件跳过

  • 当功能未实现、功能阻塞等因素导致一些用例暂时不能执行,就可以金属跳过skip用例,相当于注释的效果
  • 写法应用
import pytest,allure,os
from common.baseApi import BaseAssert

@pytest.mark.skip(reason='该模块暂时不要运行')
class TestShop(BaseAssert):
    @pytest.mark.parametrize('inBody,expData', get_excel_data('商铺模块', 'Listshop','请求参数','响应预期结果'))

    def test_shop_list(self,inBody,expData,shop_init):#shop_init初始化操作
        # 1.调用业务层封装的接口代码
        res=shop_init.query(inBody)
        # 2.断言实际返回结果与预期结果
        self.define_assert(res['code'],expData['code'])
    @pytest.mark.parametrize('inBody,expData', get_excel_data('商铺模块', 'Updateshop','请求参数','响应预期结果'))
    
if __name__ == '__main__':
    pytest.main([__file__,'-sv','--alluredir',report_path,'--clean-alluredir'])
    os.system(f'allure serve {report_path}')

  • 有条件的跳过 -skipif,if条件为真,就跳过该用例
    eg:当运行环境为Windows 版本为2.2.2跳过
  • 写法
@pytest.mark.skipif(1==2,reason='条件满足就跳过')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值