前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest+requests+allure实现接口自动化测试系列(10)-多环境切换和集成美观的allure报告

pytest+requests+allure实现接口自动化测试系列(10)-多环境切换和集成美观的allure报告

作者头像
搁浅同学
发布2022-07-21 15:02:49
7380
发布2022-07-21 15:02:49
举报

接着上一篇分享

分享好几篇,今天来分享如何集成allure测试报告和多环境切换,分享完这篇后,这个接口自动化测试也差不多完成一些基本的功能,但是还有很多功能可以扩展,比如Email发送测试结果、根据yaml生成测试脚本、编写相关装饰器记录日志等

如何进行多环境切换?

我们的项目肯定会有多套环境,比如测试环境、UAT环境、预发布环境、线上环境等,它们的唯一不同的是域名不一样,我们定义一个base_url,后面的路径肯定会相同。我们可以自定义命令,通过运行参数传入不同的base_url实现多环境切换。

我们在conftest.py定义自定义命令

代码语言:javascript
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest

# pytest自定义命令hook函数
def pytest_addoption(parser):
    parser.addoption(
        "--baseUrl", action="store", default=None, help="输入你base_url"
    )

# 定义fixture
@pytest.fixture(scope="session")
def base_url(request):
    return request.config.getoption("--baseUrl")

修改测试数据

代码语言:javascript
复制
  - testCase:
      description: login success
      name: login
      method: post
      uri: "/v3/api/user/phone_login"
      headers:
        Content-Type: application/json
      payload:
        phone: "13528872802"
        password: "Aa12345678"
        callbackType: 0
      extract:
        token: $.data.token
      validate:
         - equal_to:
            $.code: 0
         - equal_to:
            $.data.phone: "13528872802"
  - testCase:
      description: profile
      name: profile
      method: post
      uri: "/v3/api/user/profile"
      headers:
        Content-Type: application/json
        jwt-token: ${token}
      payload: {}
      validate:
        - equal_to:
            $.code: 0
            
  # base_url是https://api2.mubu.com

修改request_from_request_data函数

代码语言:javascript
复制
def request_from_request_data(request_data: dict, base_url: str):
    """

    :param base_url: 请求域名
    :param request_data: 请求数据
    :return: 返回响应
    """
    request_data = Utils.handle_request_data(request_data)
    method = request_data['method']
    headers = request_data['headers']
    url = base_url + request_data['uri']
    data = request_data['payload']
    response = request_handler(method, url, headers, data)
    if 'extract' in request_data:
        Utils.extract(request_data['extract'], response)
    return response

修改测试方法

代码语言:javascript
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest
from common.request_handler import request_from_request_data
from common.yamlRead import read_yaml
from common.utils import Utils
from common.logger import logger


class Testrequests:
    @pytest.mark.parametrize('test_data', read_yaml('../testData/login.yml'))
    def test_requests(self, test_data, base_url):
        request_data = test_data['testCase']
        logger.debug(request_data)
        request_data = Utils.handle_request_data(request_data)
        response = request_from_request_data(request_data, base_url)
        if 'validate' in request_data:
            validate_list = request_data['validate']
            Utils.validate(validate_list, response)

运行命令带上 --baseUrl

代码语言:javascript
复制
pytest -v -s test_requests.py  --baseUrl https://api2.mubu.com

测试脚本正常执行

如何集成allure测试报告?

  1. 先配置allure环境变量 MAC电脑:brew install allure windows电脑:scoop install allure ,如何电脑没有安装scoop,先安装scoop工具,再安装

2.检查allure是否安装成功

allure --version 查看allure版本号

3.安装allure-pytest插件

代码语言:javascript
复制
pip install allure-pytest

4.执行测试用例指定alluredir,生成allure临时文件

代码语言:javascript
复制
pytest -v --alluredir ../temp --baseUrl https://api2.mubu.com

在工程目录下将生成temp目录,里面是临时文件

5.通过命令生成allure报告,报告将生成在allure-report目录下

代码语言:javascript
复制
allure generate ../temp -o ../allure-result --clean

6.打开allure报告

代码语言:javascript
复制
allure open ../allure-report

今天就分享到这里,更多allure用法可以到allure官网查看用法!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 暴走的软件测试Tester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档