【Web自动化】第16讲 Pytest的基本使用

本文介绍了Pytest框架,包括其应用场景、特点(如参数化和assert使用)、安装方法,以及命令行和主函数模式的运行方式。还详细讲解了Setup和Teardown在测试中的作用,以及函数级别和类级别的测试方法示例。
摘要由CSDN通过智能技术生成

Pytest简介

应用场景:

pytest框架可以解决我们多个测试脚本一起执行的问题

Pytest 特点:

  • 简单
  • 易读
  • 支持参数化
  • 用 assert 来测试失败,而不是 self.assertEqual() 或者 self.assertLessThan()
  • 可运行 unittest 或 nose 测试。
  • 方便持续集成工具集成

安裝pytest

pip install pytest -i 	https://pypi.tuna.tsinghua.edu.cn/simple/ 

查看帮助

pytest -h

pytest书写规则

使用pytest编写用例,必须遵守以下规则

  •  测试文件名必须以“test”开头或者'test'结尾
  • 测试方法必须以“test”开头
  • 测试类名以“Test”开头
  • 断言使用基本的assert即可

使用pytest需要更改pycharm集成设置,pytest 可以执行unittest的用例和方法

Pytest运行方式

  • 命令行模式【建议】

test_demo.py

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/18 14:42
@Author  : 娜年花开
@File    : test_demo.py
@Desc    :
"""
import pytest


class Test:
    def test_case01(self):
        print(1)

    def test_case02(self):
        print(2)

 cmd执行

pytest test_demo.py

pytest -s test_demo.py

 

 -s 表示支持控制台打印,如果不加,print不会出现任何内容

  • 主函数模式

test_demo.py

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/18 14:42
@Author  : 娜年花开
@File    : test_demo.py
@Desc    :
"""
import pytest


class Test:
    def test_case01(self):
        print(1)

    def test_case02(self):
        print(2)

if __name__ =="__main__":
    pytest.main(['-s'],'test_demo.py')

在 test_demo.py文件中增加主函数

小结:

建议使用命令行的形式运行,对比主函数模式更加方便

. 表示成功

F表示失败

 Setup 和 Teardown

pytest 在运行自动化脚本的前后会执行两个特殊方法,分别是setup和teardown

在执行脚本之前会执行setup方法,在执行脚本之后会执行teardown方法

我们可以在setup中进行获取驱动对象的操作,在teardown中进行关闭驱动对象的操作

应用场景

  • 函数级别方法

运行与测试方法的始末,运行一次测试函数会运行一次setup和teardown

实例代码

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/18 14:42
@Author  : 娜年花开
@File    : test_demo.py
@Desc    :
"""
import pytest


class Test:
    def setup(self):
        print('test--->setup')
    def teardown(self):
        print('test--->down')

    def test_case01(self):
        print('test--->1')
    def test_case02(self):
        print('test--->2')

if __name__ =="__main__":
    pytest.main(['-s'],'test_demo.py')

执行结果

  •  类级别方法

 运行与测试类的始末,在一个测试类中只运行一次setup_class 和 teardown_class,不关心测试类内容有多少个测试函数

示例代码

# -*- coding: utf-8 -*-
"""
@Time    : 2023/10/18 14:42
@Author  : 娜年花开
@File    : test_demo.py
@Desc    :
"""
import pytest

class Test:
    def setup_class(self):
        print('test--->setup')
    def teardown_class(self):
        print('test--->down')

    def test_case01(self):
        print('test--->1')
    def test_case02(self):
        print('test--->2')

if __name__ =="__main__":
    pytest.main(['-s'],'test_demo.py')

 执行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值