zoukankan      html  css  js  c++  java
  • pytest接口自动化快速设置接口全局host

    版本:

    python == 3.6.0 ; pytest == 5.4.2;

    一、所需场景:

      1、被测试环境host地址发生改变,其他的都不变,不想打开代码就把host地址修改掉;

      2、被测试环境host地址发生改变,其他的也有地方有所修改,需要打开代码修改;

    需要实现一种满足以上两种使用场景的需求,我的实现思路:

      —— 不想打开代码的时候,直接在命令行执行用例的时候修改全局的host地址,

      —— 需要打开代码的时候,就直接在代码中修改host地址,直接执行用例了。不需要再回到命令行,同时还不影响默认配置。

    二、实现过程:

    1、在代码中加入可以通过命令行修改host的全局配置,在项目目录下新建 conftest.py文件(名称命名固定),写入代码如下:

    # __*__coding:utf-8 __*__
    
    import pytest
    import os
    
    # 配置全局host地址
    # 添加命令行参数.parser是内置 fixture
    # 只需要切换host地址,不用打开代码时,直接在命令行执行用例时使用
    def pytest_addoption(parser):
        '''配置全局默认host地址'''
        parser.addoption(
            "--cmdhost", action="store",
            default="http://127.0.0.1:18000",  
            help="My option: host1 or host2")
    
    @pytest.fixture(scope="session", autouse=True)
    def host(request):
        '''读取设置的全局host地址'''
        os.environ["host"] = request.config.getoption("--cmdhost")

    此时,只需在每个接口的url中引入:os.environ["host"] 即可获取到当前环境变量中的默认地址 default="http://127.0.0.1:18000";

    如果不需要修改host地址,使用设置的默认地址,直接进入项目目录执行 pytest即可执行所有用例:

    如需修改,只需要在命令行执行的时候修改即可,修改方式如下:

     以上解决了第一个痛点。

    接下来解决第二个:

    新建config目录,在目录中新建host文件,文件中写入需要修改的地址,如下:

    # __*__coding:utf-8 __*__
    
    import os
    
    def WmsHost():
        '''写入需要修改的host地址,直接在编辑器中执行用例,不需要在打开命令行'''
        WMSHost = ""
        # WMSHost = "http://127.0.0.9:180001"
        return WMSHost

    这里设置host默认为空。

    这里也设置了一个默认地址,刚才的config.py中也设置了一个默认地址,两个咋兼容起来呢?

    用如下方式:

    # __*__coding:utf-8 __*__
    
    import os
    
    def WmsHost():
        '''写入需要修改的host地址,直接在编辑器中执行用例,不需要在打开命令行'''
        WMSHost = ""
        # WMSHost = "http://127.0.0.9:180001"
        return WMSHost
    
    def obtion_host():
        host1 = WmsHost()
        host2 = os.environ["host"]
        if host1=="":
            return host2
        else:
            return host1

    当  WMSHost 默认不为空的时候,肯定是有专门来修改过,自然就需要用这个了,否则就是需要用环境变量中的默认的。

    最后再需要用和这个host的地方直接调用这个 obtion_host() 函数即可。

  • 相关阅读:
    QPS/TPS的预估
    tornado多进程模式不同进程写不同日志
    [python]pypy优化python性能
    [linux]查看进程占用内存
    [linux]杀死同一个应用的所有进程
    [LINUX] 快速回收连接
    jdbc批量写入
    Android 手机卫士--参照文档编写选择器
    Android 手机卫士--导航界面1的布局编写
    Android 手机卫士--设置界面&功能列表界面跳转逻辑处理
  • 原文地址:https://www.cnblogs.com/Zhan-W/p/13130729.html
Copyright © 2011-2022 走看看