浅谈python接口自动化测试框架Pytest

1、pytest简介

Pytest作为一种自动化框架,由于是由unittest框架继承而来,因此它的易用性和扩展性比较好,并且向下兼容unittest,成为目前主流的测试框架之一原因如下:

  • 简单灵活,容易上手
  • 支持jenkins持续集成(CI)
  • 支持allure报告输出
  • 支持参数化,重复执行(pytest-repeat框架),部分执行,测试跳过(skip)
  • 第三方插件丰富,良好的自定义扩展性
  • 简单的断言表达:assert 表达式即可

2、pytest的使用

①.用例设计原则

  • pytest文件名以test开头(也可以以test结尾):testcase.py或casetest.py
  • 类以Test开头,且类中不能含有init方法:class Testcase:
  • 函数或方法以test开头:def tesstcase():
  • assert进行断言:assert resp['code']==exception['code']

②.装饰器——数据驱动@pytest.mark.parmeterize((),[(),(),...])

list1=[(用例字段参数a1,用例字段参数b1,用例预期结果),(用例字段参数a2,用例字段参数b2,用例预期结果),(用例字段参数a3,用例字段参数b3,用例预期结果)]

@pytest.mark.parmeterize('a,b,exception',list1)
def test_a(self,a,b,exception):
resp=request.post(a,b)
assert resp['code']==exception['code']#断言

③.装饰器——初始化环境与数据清除@pytest.fixture()

fixture是由uinittest的setup/teardown改进而来,声明下面的函数是setup函数(case前执行),yield后相当于teardown函数(case后执行),yield 放函数返回值,类似于return,然后再执行后面代码;scope参数控制fixture的作用范围,scope缺省值是function。

scope的作用范围:session>module>class>function

  • function:该方法/函数调用
  • class:该类调用,一个类包含多个方法
  • module:该.py文件调用,.py文件内有多个class或function
  • session:该目录下.py文件调用,该目录下有多个.py文件,一个.py文件基于是一个module
import pytest
@pytest.fixture(scope='class')
def class1():
    print('相当于setup_class函数!')
    yield 
    print('相当于teardown_class函数!')

 注意事项:

  • fixture命名不要以test开头,跟用例区分开;
  • 一个fixture可以多个函数来使用;
  • fixture之间可以相互调用;
  • 一个方法可以有多个fixture;
  • 调用fixture的返回值,直接就是把fixture的函数名称当做变量名称;

import pytest
@pytest.fixture(scope='session')
def getcookies():
    cookie1='alksdfjaslhfdoquser192374913i2hroiashefoi7y12983yredhiu hweaieyr718273ylyhkashdflksa98243ui'
    yield cookie1
@pytest.fixture(scope='session')
def shop_init(getcookies):
    print(getcookies)#打印出'alksdfjaslhfdoquser192374913i2hroiashefoi7y12983yredhiu hweaieyr718273ylyhkashdflksa98243ui'
    yield getcookies

④.全局配置文件——conftest.py

         conftest.py 这个文件可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用,用来支持全局的共享前置后置。

注意事项:

        1、conftest.py文件名字是固定的,不可以做任何修改;

        2、文件和用例文件在同一个目录下,那么conftest.py作用于整个目录,如果下级目录存在conftest.py文件,则就近使用conftest.py;

        3、conftest.py文件所在目录必须存在__init__.py文件;

        4、conftest.py文件不能被其他文件导入;

        5、所有同目录测试文件运行前都会执行conftest.py文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值