统一请求封装和pytest入门使用

统一请求封装解决的问题

    1. 解决多个py文件共享session的问题
    1. 统计请求的数据
    1. 统一异常处理
    1. 统一日志监控

封装

在项目文件中创建一个common文件夹, 用来进行统一接口封装

import requests

class RequestUtil:
    # 调用底层的requests.session()方法进行封装
    sess = requests.session()

    def all_send_request(self, method, url, **kwargs):
        result = self.sess.request(method, url, **kwargs)
        return result

pytest 框架入门

默认的pytest测试用例规则

  • 模块名必须以test_或者_test结尾
  • 类名必须以Test开头
  • 测试用例名必须以test_开头

pytest 可以 结合 selenium、appium、requests 分别实现 web自动化,app自动化,接口自动化

pytest常用插件

pytest		本身
pytest-html		生成html报告
pytest-xdist	多线程执行用例
pytest-ordering		控制测试用例的执行顺序
pytest-rerunfailures	失败用例重跑
allure-pytest			生成美观的allure报告

当我们想一次性下载多个插件时, 我们会创建一个requirements.txt文件, 文件内容大概如下
在这里插入图片描述

然后在终端中输入命令

pip install -r requirements.txt[文件名]

按下回车,即可安装文件中所输入的插件

pytest运行方式详解

  1. 通过main方法运行
import pytest

if __name__ == "__main__":
	pytest.main()
  1. 通过命令行运行
    参数
    • -vs -v输出详细信息,-s输出调试信息

在这里插入图片描述

  • -n 表示多线程执行
  • –reruns 失败用例重跑
  • 这里我在程序中抛出一个异常
  • raise Exception("reruns测试异常重跑!!!!")
  • 运行命令 : pytest --reruns=2
    3在这里插入图片描述
  • –html 生成html文件 : 会在当前目录下生成一个report的html文件
  • 命令: pytest --html="./reports/report.html"
  1. 通过pytest.ini文件运行
    • 不管主函数运行还是命令行运行,都是通过pytest.ini全局配置文件执行
    • 如果需要执行多个标记markers中的内容,可以在addopts中输入
    • addopts = -vs -m "smoke or ocean"
      在这里插入图片描述

pytest 前后置固件

  • 前置函数固件
    • 第一种夹具
      在这里插入图片描述
  • 第二种夹具: fixtrue(常用,实现指定用例执行前后置), 完全可以替换上面的方法
  • 装饰器:
@pytest.fixtrue(scope="作用域", params="参数化", autouse="自动执行", ids="参数名别名", name="fixture别名" )

@pytest.fixture(scope="function", autouse=False)
def connect_database():
    print("链接数据库")
    yield  # 生成器,获取它的后置处理结果
    print("关闭数据库")
    
# 单独调用,只在一个函数中生效
    def test_001(self, connect_database):
        """
        :param connect_database: fixture执行函数
        :return:
        """
        print("测试001号函数")

执行结果
在这里插入图片描述

  • scope 参数
    • function 用例级别
    • class 类
    • package/session 会话级别
fixture中的参数化 parmas
  1. 在fixture中使用参数话
@pytest.fixture(scope="function", autouse=False, params=[["name", "百里"], ["age", 18]])
def connect_database(request):
    print("链接数据库")
    yield request.param  # 当有参数化时的固定写法,在后置使用函数中打印即可
    print("关闭数据库")
  1. 在test函数中调用参数话,并打印输出信息
    在这里插入图片描述
fixture独立(重要!)

想要将fixture独立,必须使用conftest.py文件进行操作
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pytest接口测试中,可以将请求封装成不同的方法,并封装在同一个测试类中。例如,可以定义一个登陆的测试类,将正确用户名和密码的请求封装成一个方法(即一条测试用例),将正确用户名和错误密码的请求封装成另一个方法(即另一条测试用例)。这样可以方便地进行接口测试,并且可以通过pytest的丰富插件和工具来生成美观的测试报告,如pytest-html和allure-pytest。此外,还可以结合自动化测试工具、跳过失败用例以及失败重跑、和Jenkins持续集成等功能来提高测试效率和质量。\[1\]\[3\] #### 引用[.reference_title] - *1* [python+pytest接口自动化 —— 测试函数、测试类/测试方法的封装](https://blog.csdn.net/myh919/article/details/129044197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Pytest学习 ------ 接口自动化测试之pytest 运行方式及前置后置封装](https://blog.csdn.net/IT_LanTian/article/details/122888023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值