Pytest学习笔记

6 篇文章 0 订阅
3 篇文章 0 订阅

建议有unittest基础后再学习pytest

一.用例规范

pytest默认的用例规范:
1.用例文件:以test开头
2.以test开头的函数会被当成一条测试用例
3.以Test类开头的类会被当成测试用例类
测试类中,以test开头的方法会被当成一条测试用例
例:

def test_login():
    assert 99 == 99


class TestLogin01:
    def test_01(self):
        assert 99 == 99

但是pytest的用例规范可以通过pytest.ini去配置
pytest.ini文件

[pytest]

python_files = test*.py

python_functions =
    test*
    *test

python_classes =
    Test*
    Check*

这里就配置了:
1.以test开头的文件是测试文件
2.函数名以test开头或test结尾的函数会被当成一条测试用例
3.以Test开头或者以Check开头的类会被当成测试类

二.测试类的前置后置

pytest的前置和后置有两种方法

第一种:
用例级别的 setup 和 teardown

    def setup(self):
        print('用例前置')

    def teardown(self):
        print('用例后置')

类级别的 setup_class 和 teardown_class

    def setup_class(self):
        print('类前置')

    def teardown_class(self):
        print('类后置')

第二种:
pytest很经典的测试夹具–pytest.fixture

@pytest.fixture()
def fix_01():
    print('用例级别前置')
    
    yield

    print('用例级别后置')


@pytest.fixture(scope='class')
def fix_02():
    print('类级别前置')
    
    yield

    print('类级别后置')


@pytest.fixture(autouse=True)
def fix_03():
    print("自动执行的用例级别前置")
    
    yield
    
    print("自动执行的用例级别后置")

调用时,在用例的参数中,写上前后置的方法名

def test_04(self, fix_01):
    print('用例1')
    assert 99 == 99

pytest中可以将所有前后置方法放到conftest.py文件中(在用例文件中直接使用,不用导入)
在这里插入图片描述

三.pytest用例执行顺序

同一个文件按照用例文件中代码的前后顺序
多个文件根据文件名的ASCII码排序

四.用例打标签

pytest.mark
1.在pytest.ini文件中markers这个配置项中注册标签
在这里插入图片描述
2.通过@pytest.mark.标签名,给用例加上标签

import pytest


class TestLogin:

    @pytest.mark.opo
    def test_01(self):
        assert 100 == 100

    def test_02(self):
        assert 10 == 100

3.执行用例的时候可以通过pytest -m 标签名 去筛选用例执行
在这里插入图片描述
4.筛选用例的时候,可以使用 and or not
pytest -m"a and b":执行同时有a和b标签的用例
pytest -m"a or b":执行有a或者b标签的用例
pytest -m"not a":执行没有a标签的用例

5.跳过
@pytest.mark.skip 直接跳过

@pytest.mark.skipif (表达式) 通过条件来跳过

五.用例运行的方式

命令行:pytest 参数

pytest.main运行:pytest.main([‘参数列表’])

筛选执行的用例文件 或者 测试类 或者 用例方法
1.执行测试文件:pytest 文件名.py
2.执行测试类:pytest 文件名.py::类名
3.执行测试方法:pytest 文件名.py::类名::用例方法名

在这里插入图片描述
只执行test_Demo1的话

命令行进入test_Case目录,输入pytest test_Demo1.py
就可以只执行test_Demo1文件了
在这里插入图片描述
只执行test_Demo1中的TestLogin方法的话,就输入pytest test_Demo1.py::TestLogin
在这里插入图片描述

六.断言

unittest中内置的很多断言的方法
pytest中断言直接使用assert关键字

七.参数化

参数化就是unittest中ddt

import pytest

class Test99:
    cases = [11, 2, 23, 456, 7, 5, 44, 66, 77, 88, 99]

    @pytest.mark.parametrize('item', cases)
    def test_999(self, item):
        assert item > 30

八.测试报告

allure报告
具体安装步骤:

1.在https://github.com/allure-framework/allure2/releases下载allure进行解压
2.将解压后的bin路径放在系统变量path中
3.安装依赖

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值