• 接口自动化-python+requests+pytest+csv+yaml


    本套代码和逻辑 是本人的劳动成果,如果有转载需要标注,

    非常适合公司做项目的同学!!!小白也可以学哦!

    1.项目目录

     2.公共方法的封装

    2.1如果不用配置文件 可以使用这个方法进行封装--但是有一定的缺陷!!!!

    import requests
    
    METHODS = ['GET', 'POST', 'HEAD', 'TRACE', 'PUT', 'DELETE', 'OPTIONS', 'CONNECT', 'PATCH']
    
    
    # 可以不使用----
    
    class HTTPClient (object):
        def __init__(self, url, method='GET', headers=None, cookies=None):
            """headers: 字典。 例:headers={'Content_Type':'text/html'},cookies也是字典。"""
            self.url = url
            self.session = requests.session ()
            self.method = method.upper ()
            if self.method not in METHODS:
                raise Exception ('不支持的method:{0},请检查传入参数!'.format (self.method))
    
            self.set_headers (headers)
            self.set_cookies (cookies)
    
        def set_headers(self, headers):
            if headers:
                self.session.headers.update (headers)
    
        def set_cookies(self, cookies):
            if cookies:
                self.session.cookies.update (cookies)
    
        def send(self, params=None, data=None, **kwargs):
    
            # urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
            response = self.session.request (method=self.method, url=self.url, params=params, data=data, verify=False,
                                             **kwargs)
            response.encoding = 'utf-8'
            # logger.debug('{0} {1}'.format(self.method, self.url))
            # logger.debug('请求成功: {0} {1}'.format(response, response.text))
            return response

     2.2为什么要用yaml去做全局数据的配置

       看我博客yaml的好处   https://www.cnblogs.com/zsplovezsp/p/12443036.html

     3.测试用例和测试数据的格式

     

     4.其他的就很简单了就不做,描述了--如果有想学python和测试开发,测试自动化的可以多关注一下

    5,.pytest常用的方法

    pytest常用的方法和原理

    1.pytest的原理

      1. pytest插件基于pluggy模块;pluggy有三个重要概念:HookspecMarker(用来定义hook函数),HookimplMarker(用来实现钩子函数完成插件的逻辑)和PluginManager(用来负责注册和调用插件的管理器);

     

    2.pytest的规定

      1. 所有规范和实现均遵循pytest_前缀命名约定,从而易于区分和查找

    3.加载插件的方式

      1. 内置插件:从代码内部的_pytest目录加载
      2. 外部插件(第三方插件):通过setuptools entry points机制发现的第三方插件模块
      3.  conftest.py形式的本地插件:测试目录下的自动模块发现机制

    4.pytest插件的顺序

    1.通过扫描命令行中的选项并阻止该插件被加载(即使内置插件也可以通过这种方式被阻止)。这是在正常的命令行解析之前发生的。-p no:name

    2.加载所有的内置插件

    3.通过预扫描命令行中,-p name选项,在实际解析命令行之前加载指定的插件

    4.加载所有通过setuptools入口点注册的插件(可设置环境变量PYTEST_DISABLE_PLUGIN_AUTOLOAD进行禁用,仅加载明确指定的插件)

    5.加载通过环境变量PYTEST_PLUGINS指定的所有插件

    6.加载通过命令行推断出的所有confest.py文件:

    -如果未指定测试路径,则使用当前dir作为测试路径

    -如果存在指定测试路径,那么加载conftest.py和test */conftest.py,相对于第一个测试路径

    注意,pytest是找不到藏在更深的子目录里的confest.py文件的,最好将confest.py保存在顶级的测试或者项目的根目录

    7.通过在confest.py文件中的pytest_plugin指定的变量,递归加载所有的插件

    5.安装路径

      • pytest第三方插件库网站 https://docs.pytest.org/en/latest/plugins.html

     

     

      • PyPI下载 https://pypi.python.org(可以使用pytest、pytest-、-pytest作为搜索关键字来搜索插件)

     6.常用的插件简单描述

      • pytest-rerunfailures:失败用例重跑
      • pytest-html:生成xml/html格式的测试报告,存储于用户指定路径
      • pytest-repeat:重复执行多次用例
      • pytest-assume:进行多次断言
      • pytest-xdist:测试用例可以分布式执行,从而节省自动化测试时间
      • pytest-cov:覆盖率报告,显示哪些代码行已经测试过,哪些还没有
      • pytest-instafail:在测试运行期间报告失败
      • pytest-timeout:根据函数标记或全局定义进行超时测试
      • pytest-ordering:设定执行顺序。对于一些上下文依赖的,有时候可能需要设定一些特定执行顺序
      • pytest-cache:重跑上次失败的用例
      • pytest-autochecklog:自动生成测试日志
      • pytest-sugar:改变默认外观,添加了一个进度条

    6.---------------------------------------------------

    如果有想要代码和了解更多的可以加   _99Rampant

  • 相关阅读:
    Makefile学习(二)条件判断和内嵌函数
    Makefile学习(一)变量
    ZigBee心电传输(二)
    ZigBee心电传输(一)
    Zedboard甲诊opencv图像处理(四)
    Zedboard甲诊opencv图像处理(三)
    Zedboard甲诊opencv图像处理(二)
    linux的几个彩蛋
    Git
    lua
  • 原文地址:https://www.cnblogs.com/zsplovezsp/p/15221733.html
Copyright © 2020-2023  润新知