Pytest+request+Allure实现接口自动化框架

yizhihongxing

Pytest是一个Python的单元测试框架,它可以帮助我们更方便地编写和运行测试用例。request是一个Python的HTTP库,它可以帮助我们发送HTTP请求和处理HTTP响应。Allure是一个测试报告框架,它可以帮助我们生成美观、易读的测试报告。本文将通过实例讲解如何使用Pytest+request+Allure实现接口自动化框架,包括安装和使用Pytest、request和Allure,以及两个示例。

安装Pytest、request和Allure

在使用Pytest、request和Allure之前,我们需要先安装它们。我们可以使用pip命令来安装它们:

pip install pytest requests allure-pytest

使用Pytest+request+Allure实现接口自动化框架

我们可以使用Pytest+request+Allure实现接口自动化框架。以下是一个示例,演示如何使用Pytest+request+Allure实现接口自动化框架:

测试用例代码

import pytest
import requests

@pytest.fixture(scope='session')
def base_url():
    return 'http://example.com'

@pytest.fixture(scope='session')
def headers():
    return {'Content-Type': 'application/json'}

@pytest.fixture(scope='session')
def login_token(base_url, headers):
    url = base_url + '/login'
    data = {'username': 'test', 'password': 'test'}
    response = requests.post(url, json=data, headers=headers)
    return response.json()['token']

@pytest.fixture(scope='session')
def auth_headers(headers, login_token):
    headers['Authorization'] = 'Bearer ' + login_token
    return headers

@pytest.mark.parametrize('user_id', [1, 2, 3])
def test_get_user_info(base_url, auth_headers, user_id):
    url = base_url + '/user/' + str(user_id)
    response = requests.get(url, headers=auth_headers)
    assert response.status_code == 200
    assert response.json()['id'] == user_id

@pytest.mark.parametrize('data', [{'name': 'John', 'age': 30}, {'name': 'Mary', 'age': 25}])
def test_create_user(base_url, auth_headers, data):
    url = base_url + '/user'
    response = requests.post(url, json=data, headers=auth_headers)
    assert response.status_code == 200
    assert response.json()['name'] == data['name']
    assert response.json()['age'] == data['age']

在上面的示例中,我们定义了四个fixture函数,分别用于获取base_url、headers、login_token和auth_headers。我们使用@pytest.mark.parametrize装饰器定义了两个测试用例,分别用于测试获取用户信息和创建用户。我们使用requests库发送HTTP请求,并使用assert语句断言HTTP响应的状态码和内容。我们使用Allure的装饰器@pytest.mark.parametrize和@pytest.mark.usefixtures来生成测试报告。

运行测试用例

我们可以使用以下命令来运行测试用例:

pytest --alluredir=./report

在运行测试用例之后,我们可以使用以下命令来生成测试报告:

allure serve ./report

示例2:使用Pytest+request+Allure实现接口性能测试

我们可以使用Pytest+request+Allure实现接口性能测试。以下是一个示例,演示如何使用Pytest+request+Allure实现接口性能测试:

测试用例代码

import pytest
import requests

@pytest.fixture(scope='session')
def base_url():
    return 'http://example.com'

@pytest.fixture(scope='session')
def headers():
    return {'Content-Type': 'application/json'}

@pytest.fixture(scope='session')
def login_token(base_url, headers):
    url = base_url + '/login'
    data = {'username': 'test', 'password': 'test'}
    response = requests.post(url, json=data, headers=headers)
    return response.json()['token']

@pytest.fixture(scope='session')
def auth_headers(headers, login_token):
    headers['Authorization'] = 'Bearer ' + login_token
    return headers

@pytest.mark.parametrize('user_id', [1, 2, 3])
def test_get_user_info(base_url, auth_headers, user_id, benchmark):
    url = base_url + '/user/' + str(user_id)
    response = benchmark(requests.get, url, headers=auth_headers)
    assert response.status_code == 200
    assert response.json()['id'] == user_id

@pytest.mark.parametrize('data', [{'name': 'John', 'age': 30}, {'name': 'Mary', 'age': 25}])
def test_create_user(base_url, auth_headers, data, benchmark):
    url = base_url + '/user'
    response = benchmark(requests.post, url, json=data, headers=auth_headers)
    assert response.status_code == 200
    assert response.json()['name'] == data['name']
    assert response.json()['age'] == data['age']

在上面的示例中,我们使用了pytest-benchmark插件来进行性能测试。我们使用benchmark装饰器来对requests库的get和post方法进行性能测试。我们使用assert语句断言HTTP响应的状态码和内容。

运行测试用例

我们可以使用以下命令来运行测试用例:

pytest --benchmark-autosave --alluredir=./report

在运行测试用例之后,我们可以使用以下命令来生成测试报告:

allure serve ./report

总结

本文通过实例讲解了如何使用Pytest+request+Allure实现接口自动化框架,包括安装和使用Pytest、request和Allure,以及两个示例。我们可以使用Pytest+request+Allure实现接口自动化测试和性能测试,提高程序的可靠性和性能。同时,我们也需要注意测试用例的正确性和稳定性,避免出现意外的错误和异常。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytest+request+Allure实现接口自动化框架 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • python如何进行矩阵运算

    Python是一种高效而简单的编程语言,提供了许多强大的工具来进行矩阵运算。本文将介绍利用python进行矩阵运算的方法,包括如何创建矩阵、如何进行基本的矩阵操作、以及如何使用numpy库中的函数进行更加复杂的矩阵运算。 创建矩阵 在Python中,最常见的创建矩阵的方法是使用列表嵌套列表的方式。例如,下面是一个3×3的矩阵: matrix = [[1, 2…

    python 2023年5月18日
    00
  • 如何在Python中执行MongoDB数据库的查询语句?

    以下是如何在Python中执行MongoDB数据库的查询语句的完整使用攻略,包括连接MongoDB数据库、执行查询语句、获取查询结果等步骤。同时,提供了两个示例以便更好理解如何在Python中执行MongoDB数据库的查询语句。 步骤1:连接MongoDB数据库 在Python中,我们可以使用PyMongo库连接MongoDB数据库。以下连接MongoDB数…

    python 2023年5月12日
    00
  • 各种Python库安装包下载地址与安装过程详细介绍(Windows版)

    下面是关于各种Python库安装包下载地址与安装过程详细介绍(Windows版)的攻略。 下载Python 首先我们需要下载Python的安装包,可以到官网https://www.python.org/downloads/,选择对应版本的安装包进行下载。选择好适合自己的版本后,点击“Download”进行下载。 安装Python 下载完成后,双击运行下载的安…

    python 2023年5月14日
    00
  • Python流程控制 if else实现解析

    Python流程控制if-else实现解析 if-else是Python中常用的流程控制语句,可以根据条件执行不同的代码块。本文将详细介绍if-else语句的使用方法,并提供两个示例。 if-else语句的基本用法 if-else语句的基本用法如下: if condition: # 如果条件成立,执行这里的代码块 else: # 如果条件不成立,执行这里的代…

    python 2023年5月15日
    00
  • Python Numpy count_nonzero函数

    当需要统计数组中非零元素的个数时,可以使用 Python Numpy 库中的 count_nonzero 函数。该函数用于返回数组中非零元素的数量。 函数定义如下: numpy.count_nonzero(a, axis=None) 其中,参数 a 表示输入的数组,参数 axis 表示统计非零元素的轴,如果设置为 None,则统计整个数组中的非零元素。 下面…

    python-answer 2023年3月25日
    00
  • Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError

    Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError 在使用Python发送邮件时,可能会遇到smtplib.SMTPAuthenticationError异常,该异常表示SMTP服务器拒绝了认证。本文将详细讲解如何解决Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationErr…

    python 2023年5月13日
    00
  • Python让列表逆序排列的3种方式小结

    在Python中,可以使用多种方式将列表逆序排列。本文将详细讲解Python让列表逆序排列的3种方式,包括使用reverse()方法、使用切片操作和使用sorted()函数。 使用reverse方法 在Python中,可以使用reverse()方法将列表逆序排列。该方法会直接修改原列表,而不是返回一个新的列表。下是一个示例: # 定义一个列表 my_list…

    python 2023年5月13日
    00
  • python TKinter获取文本框内容的方法

    获取python中Tkinter文本框内容的方法有多种,下面将介绍其中两种方法的使用。 方法一:使用.get()方法获取文本框内容 使用.get()方法可以获取文本框中的内容,使用步骤如下: 创建一个文本框,并设置相应的属性: from tkinter import * root = Tk() text = Text(root, width=50, heig…

    python 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部