pytest使用

pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:

  1. 简单灵活,容易上手
  2. 支持参数化
  3. 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
  4. pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
  5. 测试用例的skip和xfail处理
  6. 可以很好的和jenkins集成
  7. report框架----allure 也支持了pytest

1.pytest安装

1.1 安装

pip install -U pytest

1.2验证

pytest --version # 会展示当前已安装版本

2pytest断言

assert 'h' in 'hello'(判断h在hello包含中)
assert a==b(判断a=b)
assert a!=b(判断a!=b)
assert 5>6(判断5>6为真)
assert not xx(判断xx不为真)
assert {'0','1','3','8'}=={'0','3','5','8'}
assert a  判断a是否未true
assert res is none
assert res is not none

3.pytest方法级别fixture

pytest 方法级别的fixture是针对每个测试方法,在执行测试方法前执行fixtrue初始化的操作,在执行完测试方法后,执行fixtrue销毁操作。

初始化操作方法:def  setup(self):方法来实现

销毁操作方法:def teardown(self):方式来实现

4.pytest类级别fixtrue

pytest类级别的fixtrue针对每个测试类的初始化和销毁操作,以下两个方法

类级别初始化方法:def setup_class(self):

类级别销毁方法:def teardown_class(self):

5.pytest之配置文件

5.1 pytest的配置文件有固定的三个名称

分别是        1、pytest.ini

                  2 、tox.ini

                  3、setup.cfg

5.2配置文件内容

        参数详解:

        addopts配置:参数详解
-s:表示输出调试信息,用于显示测试函数中print()打印的信息
-v:未加前只打印模块名,加v后打印类名、模块名、方法名,显示更详细的信息
-q:表示只显示整体测试结果
-vs:这两个参数可以一起使用
-n:支持多线程或者分布式运行测试用例(需安装:pytest-xdist插件)

pytest -vs test_login.py -n 2

pytest.main(['-vs', '-n=2'])

        配置好配置文件 直接在terminal输入pytest就可以执行了

【pytest】                    //标识当前文件为pytest配置文件
addopts= -s -v                //配置参数
testpaths=./script            //配置测试文件路径
python_files=test_*.py        //测试文件匹配配置
python_classes=Test*          //测试类名进行匹配配置
python_functions= test_*      //测试方法进行匹配

5.2 pytest 使用main方法运行

if __name__ == '__main__':
    //注意在括号里面用的是列表
    pytest.main(["-s","-v","./test_lx_demo_o1.py"])

6pytest 之 跳过执行(skip)

场景:

        1调试时不想运行这个用例

        2标记无法在某些平台上运行的测试功能

        3当前的外部资源不可用时跳过

        4在某些版本执行,某些版本不执行

6.1介绍:

        在自动化测试过程中经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致一些用例执行不了,这时就可以用到跳过skip用例,如果我们注释掉或删除掉,后面还要进行恢复操作。

1、skip跳过成功,标识为:

============================= 2 skipped in 0.04s ==============================

2、pytest.main(['-rs','test01.py']) -rs 执行,跳过原因才会显示SKIPPED [1] test01.py:415:跳过 Test 类,会跳过类中所有方法。

3、skip跳过,无条件和原因@pytest.mark.skip()

4、skip跳过,无需满足条件true、有跳过原因@pytest.mark.skipif(reason=‘无条件,只有跳过原因’)

5、skip跳过,需满足条件true、且有跳过原因@pytest.mark.skipif(条件1==1,reason=‘跳过原因’)

6、skip赋值变量,多处调用myskip=pytest.mark.skipif(1==1,reason=‘skip赋值给变量,可多处调用’)。

6.2 跳过测试类

跳过执行可以声明在 类、方法 上 

@pytest.mark.skip()@pytest.mark.skipif()两个标签,用它们装饰测试类:

  1. 被标记的类中所有方法测试用例都会被跳过。

  2. 被标记的类,当条件为ture时,会被跳过,否则不跳过。

'''
skip跳过类
'''

import pytest,sys
@pytest.mark.skip(reason='跳过Test类,会跳过类中所有方法')
class Test(object):
    def test_one(self):
        assert 1==1
    def test_two(self):
        print('test_02')
        assert 1==2
if __name__=='__main__':
    pytest.main(['-rs','test01.py'])
 
 
"C:\Program Files\P
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值