Pytest框架--自动化脚本如何切换测试环境


前言

在做自动化测试时,经常会遇到需要在不同环境下运行脚本,一般的公司都有几套测试环境:dev(开发环境)、test(测试环境)、pre(预生产环境)、prod(生产环境),那么自动化脚本需要能够自由切换环境url,这里通过pytest框架实现自由切换环境

一、pytest-base-url插件

通过此插件,可把url独立出来,在控制台指定运行即可

1、安装插件

pip install pytest-base-url

二、pytest-base-url使用

1、控制台指定base_url

测试用例代码如下(示例):

import requests

def test_search(base_url):
    # https://ug.baidu.com/mcp/pc/pcsearch
    base_url = ''
    param = \
        {
        "invoke_info": {
            "pos_1": [{}],
            "pos_2": [{}],
            "pos_3": [{}]
          }
        }
    res = requests.post(url=base_url,json=param)
    return res

注意:直接在编译器里run会报错,需要在命令行指定base_url

pytest命令行执行:

加上 --base-url 参数

pytest -vs --base-url=https://ug.baidu.com/mcp/pc/pcsearch

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

2、pytest.ini文件指定base_url

pytest.ini代码如下(示例):

[pytest]
base_url = https://ug.baidu.com/mcp/pc/pcsearch

测试用例代码如下(示例):

import requests

def test_search(base_url):
    # https://ug.baidu.com/mcp/pc/pcsearch
    base_url == ''
    param = \
        {
        "invoke_info": {
            "pos_1": [{}],
            "pos_2": [{}],
            "pos_3": [{}]
          }
        }
    res = requests.post(url=base_url,json=param)
    return res

注意:在ini文件指定路径后,可直接编译器内run运行

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

2、使用hooks函数

pytest有个hooks函数,可以自定义命令行参数,一般在conftest.py中去引用

代码如下(示例):

def pytest_addoption(parser):
    parser.addoption(
        "--project_url",
        action="store",
        default="https://ug.baidu.com/mcp/pc/pcsearch",
        help="这里可传递项目url"
    )
    parser.addoption(
        "--mysql_url",
        action="store",
        default="192.168.1.1",
        help="这里可传递项目数据库地址"
    )

代码解析:
1、设置了两个命令行参数:–project_url、–mysql_url
2、default默认值
3、help后面是对这两个命令行的解释,解释说明这两个命令行代表什么含义

通过fixture函数中的request参数去读取命令行传递的参数,赋值给一个变量,就可以在pytest中随便使用

代码如下(示例):

import pytest
import requests

@pytest.fixture(scope="class")
def get_env(request):
    project_url = request.config.getoption("--project_url")
    mysql_url = request.config.getoption("--mysql_url")
    return project_url,mysql_url


def test_search(get_env):
    # https://ug.baidu.com/mcp/pc/pcsearch
    new_url = get_env[0]
    param = \
        {
        "invoke_info": {
            "pos_1": [{}],
            "pos_2": [{}],
            "pos_3": [{}]
          }
        }
    res = requests.post(url=new_url,json=param)
    return res

执行测试用例:

pytest --project_url=http:www.baidu.com

在这里插入图片描述
不想传入新的环境,则直接pytest运行即可
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值