统一请求封装解决的问题

解决多个py文件共享session的问题

统计请求的数据

统一异常处理

统一日志监控

封装

在项目文件中创建一个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运行方式详解

通过main方法运行

import pytest

if __name__ == "__main__":

pytest.main()

通过命令行运行 参数

-vs -v输出详细信息,-s输出调试信息

-n 表示多线程执行–reruns 失败用例重跑这里我在程序中抛出一个异常raise Exception("reruns测试异常重跑!!!!")运行命令 : pytest --reruns=2 3–html 生成html文件 : 会在当前目录下生成一个report的html文件命令: pytest --html="./reports/report.html"

通过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

在fixture中使用参数话

@pytest.fixture(scope="function", autouse=False, params=[["name", "百里"], ["age", 18]])

def connect_database(request):

print("链接数据库")

yield request.param # 当有参数化时的固定写法,在后置使用函数中打印即可

print("关闭数据库")

在test函数中调用参数话,并打印输出信息

fixture独立(重要!)

想要将fixture独立,必须使用conftest.py文件进行操作

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: