首页 > 其他分享 >pytest接口自动化(一)

pytest接口自动化(一)

时间:2023-06-14 22:13:28浏览次数:38  
标签:username ... self 接口 pytest 自动化 password

  这里说下pytest接口自动化的工程项目的基本结构(个人的工程结构),项目工程主要使用pytest、pymysql、requests、pyyaml、allure-pytest、pytest-rerunfailures、pytest-xdist、filelock等插件。

  首先工程结构

  • api_test [工程名称]
    • api  存放接口的封装方法,方法中一般存着接口的传参、接口地址及请求方式信息     如下:

      class API(HttpClinet):

        ...

        def selectUser(self, userid, **kwargs):

          url = '/select/{}'.format(userid)

          return self.post(url, **kwargs)

        ...

    • base [基本信息]  一般存放封装的接口请求方式、headers最基础的信息、request方法、基本模块等信息。  如下:

      class HttpClient:

        headers ={

          "content-type": "application/json; charset=UTF-8",

          "source": 501

        }

        ...

        def get(self, path, **kwargs):

          return self.request(path, 'GET', **kwargs)

        def request(self, path, method, data=None, json=None,**kwargs):

          ...

          if method == "GET":

            rsp = self.session.get(url, **kwargs)

          ...

          return rsp

    • common [基础的公共方法]  发送邮件、数据库操作、读取数据、加载文件、json解析等方法
    • config [配置文件]  数据库、项目地址、日志设置等配置文件。如下:

      mysql:

        host: 127.0.0.1

        port: 3306

        username: xxxxxx

        password: xxxxxx

        db: database

    • data [测试数据]  username、password、errorCode等
    • operations [接口拼接]  存放拼接好的接口,在实际用例脚本中直接传对应参数值调用即可。如下

      class O_Oprations:

        ...

        def login(self, username, password):

          payload = {

            "username" : username,

            "password" : password,

            ...

          }

          res = core_ip.login(json = playload)

          return = res

    • conftest [封装的测试用例的通用方法]  目的是为了简化测试用例脚本,便于统一维护,提高可读性   如下:

        @pytest.fixture(scope = 'session')

      def login_fixture():

        username = basedata["user"]["username"]

        password = basedata["user"]["password"]

        result = O_Oprations(token=None).login(username, password)

        baseToken = json.loads(result.content)["userInfo"]["token"]

        yield result.content

      这里,我们为了测试用例脚本的执行,资源的节省,会用到pytest里面的fixture的概念。


 

      fixture 的作用范围

      fixture里面的scope参数可以控制fixture的作用范围:session > module > class > function

      - function 每一个函数或方法都会调用

      - class 每一个类调用一次,一个类可以有多个方法

      - module 每一个.py文件调用一次,文件内又有多个function 和 class

      - session 多个文件调用一次,可以跨.py文件调用,每个.py文件就是module


 

      接下来,我会在 pytest接口自动化(二)中,和大家一起学习 用例脚本 单场景单接口,单场景多接口等

        

      

  

  

标签:username,...,self,接口,pytest,自动化,password
From: https://www.cnblogs.com/xiaocai84/p/17480941.html

相关文章

  • SystemVerilog接口练习
           结合《SystemVerilog验证测试平台编写指南》和《FPGA应用开发和仿真》,在gVim里敲代码,学习一下接口的用法。1interfacemembus2#(3parameterLEN=256,DW=84)5(6inputwireclk,7inputwirerst8);9logic[$clog2(......
  • springboot-feign接口压缩异常
    WARNorg.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver-Resolved[org.springframework.http.converter.HttpMessageNotReadableException:JSONparseerror:Illegalcharacter((CTRL-CHAR,code31)):onlyregularwhitespace(\r,\......
  • 基于XC7Z100+OV5640(DSP接口)YOLO人脸识别模块编写思路(部分1)
    填充模块设计及代码编写填充模块的功能对卷积层的输入数据进行填充操作,即在数据的四周加上一圈0,以保持特征图的尺寸不变或增大例如,将\(416*416\)的数据填充为\(418*418\)的数据填充模块的设计思路以第一层卷积层(layer0)的输入数据为例,图像尺寸为\(416*416\),通道数......
  • pytest 执行脚本时,报(no name '/Users/**/PycharmProjects/interface_auto/test_case/
    触发场景:pytest执行脚本时,命名全部正确,但是直接报找不到执行函数解决方式:取掉init方法原因:测试框架在运行测试时会自动实例化测试类的对象,并且不会传递任何参数。如果您定义了__init__方法,测试框架将无法实例化您的测试类,从而导致测试无法运行。因此,为了确保测试类能够正......
  • jenkins 自动化部署 flink job
    JenkinsfiledefdeployIp='192.168.1.53'defremote=[:]remote.name=deployIpremote.host=deployIpremote.user='root'remote.password=LCX_PWD_5sremote.allowAnyHosts=truedefgitUrl='http://192.168.1.43:8600/bigda......
  • ESXI自动化管理中关于Ansible工具警告提示处理方法
    近期对服务器软件硬件都进行了升级换代,更新的平台操作系统,紧接发现原来跳板机已无法直接使用,也得升级才能使用,于是把跳板机也进行系统升级,重新安装部署自动化运维管理工具,在安装使用ansible对接ESXI服务器管理的时候提示[WARNING]:Nopythoninterpretersfoundforhostx.x.x.x......
  • 如何在自动化测试中发现未知漏洞?
    随着软件技术的发展,自动化测试已经成为了软件开发流程中重要的一环。在测试过程中,我们通常会关注已知的漏洞或缺陷,但是如何在自动化测试中发现未知漏洞呢?下面将探讨一些方法。1.Fuzz测试Fuzz测试是一种黑盒测试方法,它基于输入数据的随机生成和测试,可以检测到很多未知的漏洞。这种......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-3-离线搭建playwright环境
    1.简介有些小伙伴或者童鞋们私信留言说自己是在公司局域网办公,或者公司为了安全对网络管控比较严格(尤其是一些大的国企、央企),总之就是一句话无法连到外网去在线下载,宏哥刚看到留言时觉得这问题还留言问啊,你找个有网的电脑下载好安装包然后安装就可以用了。(第一种情况及解决办法:带......
  • NodeJS研究笔记:利用Buffer类的二进制数据读取接口解析ELF文件格式
    javascript作为前端开发语言,自古来对二进制数据的读取解析方面的支持都很薄弱,一般来说,解析二进制数据时,往往是将数据转换成字符串,然后运用各种字符串操作技巧来实现二进制数据的读取。由于NodeJS作为后台服务器开发平台,数理逻辑的设计需求超越javascript作为前端语言时界面UI的设......
  • 调用别人接口模版
    需求场景:很多时候需要调用一些外部接口,但是如果外部接口报错,不能影响我们正常的代码运行,所以要对一些基本异常情况做一些判断。实现:假设现在有一个请求HttpResponseexecute=HttpRequest.post(url).headerMap(headers,true).contentType(APPLICATION_JSON_VALUE).b......