Pytest自动化测试的具体使用

Pytest是Python中最流行的自动化测试框架之一,简单易用,而且具有丰富的插件可以不断扩展其功能,同时也提供了丰富的断言功能,使得编写测试用例更灵活。

一、Pytest如何安装

一般都使用pip来安装:

1

pip install pytest

二、Pytest如何编写用例

创建一个python文件(test_example.py),并编写以下代码:

1

2

3

4

5

6

7

# test_example.py

def add(a,b):               # 定义函数

    return a+b

def test_add():             # 编写测试用例

    assert add(1,2) == 3    # assert断言

三、Pytest如何运行用例

 打开终端,在对应的工作目录下,输入命令:

1

pytest test_example.py

四、Pytest如何实现参数化

1

2

3

4

5

6

7

8

9

import pytest

def add(a, b):

    return a + b

@pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (0, 0, 0), (-1, 1, 0)])

def test_add(a, b, expected):

    result = add(a, b)

    assert result == expected

五、Pytest如何跳过和标记用例

1

2

3

4

5

6

7

8

9

10

import pytest

@pytest.mark.skip("This function is not completed yet")

def test_uncompleted_function():

    pass

@pytest.mark.slow

def test_slow_function():

    # 此处放慢测试的代码

    pass

六、Pytest如何失败重执行

首先安装失败重跑插件:pytest-rerunfailures

1

pip install pytest-rerunfailures

插件参数:
命令行参数:–reruns n(重新运行次数),–reruns-delay m(等待运行秒数)
装饰器参数:reruns=n(重新运行次数),reruns_delay=m(等待运行秒数)

如果想要重新执行所有测试用例,直接输入命令:

1

pytest --reruns 2 --reruns-delay 10 -s

上述首先设置了重新运行次数为2,并且设置了两次运行之间等待10秒。

如果想重新运行指定的测试用例,可通过装饰器来实现,命令如下:

1

2

3

4

5

6

import pytest

@pytest.mark.flaky(reruns=3,  reruns_delay=5)

def test_example():

    import random

    assert random.choice([True, False, False])

七、Pytest如何使用夹具

首先创建夹具,代码如下:

1

2

3

4

5

@pytest.fixture()

def test_example():

    print('case执行之前执行')

    yield

    print('case执行之后执行')

使用夹具方式1:通过参数引用

1

2

def test_case(test_example):

    print('case运行中')

使用夹具方式2:通过函数引用

1

2

3

4

@pytest.mark.usefixtures('test_example')

def test_case():

    print('case运行中')

八、Pytest如何进行夹具共享

夹具共享:conftest.fy文件,可以跨多个文件共享夹具,而且在用例模块中无需导入,pytest会自动发现conftest.py中的夹具。
fixture 优先级:当前所在模块---> 当前所在包的 conftest.py--->上级包的 conftest.py--->最上级的 conftest.py

九、Pytest如何设置夹具作用域

作用域执行的优先级:session > module > class > function

根据@pytest.fixture()中scope参数不同,作用域区分:

  • function(函数):默认值。每个测试用例函数执行时都会执行一次。  
  • class(类):不论有多少测试用例,整个类只会运行一次。
  • module(模块):不论有多少测试用例,整个模块(文件)下只运行一次。
  • package(包):不论有多少测试用例,整个包(文件夹)下只运行一次。
  • session:不论有多少测试用例,整个pytest下只会运行一次。
​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值