测试学习笔记之--pytest使用和断言处理以及setup,theardown使用

Pytest

Pytest是python的一个测试工具, 可以用于所有类型和级别的软件测试。Pytest是一个可以自动查找到你编写的用例并运行后输出结果的测试框架。

Pytest特点

1. 是一个命令行工具, 编写用例简单,可读性强.
2. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
2. 支持单元测试和功能测试.
3. 支持参数化.
4. 执行测试过程中可以将某些测试跳过,或者对某些预期失败的Case标记成失败
5. 支持重复执行失败的Case.
6. 支持运行由Unittest编写的测试Case
7. 具有很多第三方插件,并且可以自定义扩展
8. 方便的和持续集成工具集成.
9. 可以运行以test开头或test结尾的包 文件和方法
10. 可以使用assert进行断言

pytest安装

安装命令: pip install -U pytest
参数解释:   
    -U 是upgrade, 表示已安装就升级为最新版本.
安装成功校验: pytest --version # 会展示当前已安装版本

注意:测试的脚本文件中的测试函数或者测试类必须以test开头,否则测试函数不执行

pytest 的简单使用:

import pytest
import requests

# 测试函数必须是以 test 开头
def test_baidu():
    r = requests.get('http://www.baidu.com')
    print(r.status_code)
    # 使用断言 若是 返回的状态码不是 200 则抛出错误信息为 访问出错
    assert  r.status_code == 200, '访问出错'

# 当需要编写多个测试样例的时候,我们可以将其放到一个测试类当中,如:  测试类必须以 Test开头 测试类中的测试方法也要以 test 开头 并且不能带有 init 方法
class TestItcast(object):
    def testItcast(self):
        r = requests.get('http://www.itheima.com/')

        assert r.status_code == 100


    def test_two(self):
        x = "hello"
        assert hasattr(x, 'check')

命令行运行语句

模式1:直接运行test_se.py文件中的所有cases:

pytest test_se.py

模式2:运行test_se.py文件中的TestClassOne这个class下的两个cases:

pytest test_se.py::TestClassOne

模式3:运行test_se.py文件中的TestClassTwo这个class下的test_one:

pytest test_se.py::TestClassTwo::test_one

1.断言处理

1.1 什么是断言

断言就是用来检测程序是否正确, 若条件为假,就中断程序执行.

1.2 使用场景

  • 使用assert语句
  • 断言预期的异常
  • 断言预期的警告

1.3异常断言

在测试过程中,对某些方法进行测试时,预测输入某些特定数据,会抛出特定异常,若出现特定异常,则用例执行通过。对这类特定异常的断言,可以采用pytest中的**pytest.raises()**进行处理。

Pytest.raises() 测试抛出的异常是否是预期的异常类型,否则测试不会通过

Pytest.raises(expected_exception, args, kwargs) 参数解释

  • expected_exception : 预期的异常信息

         # 可以把异常信息存储到一个变量中, 变量的类型为异常类, 包含异常的type, value或者traceback等信息.
            # match 参数作用 是匹配输出的异常信息是否和 match 中设置的值一样 不一样 出抛出错误 (即设置了这个参数的话,需要错误类型和信息都一样才会通过测试)
            # match 参数匹配异常的信息的机制是和 正则里面的match方法一样的 (从头开始匹配)
            # with pytest.raises(TypeError,match='1568') as e:
            with pytest.raises(TypeError,match='传') as e:
            # with pytest.raises(ValueError,match='df') as e:
                leap_year.is_leap_year('15')
    

有时候我们可能需要在测试用到产生的异常信息, 我们可以把异常信息存储到一个变量中, 变量的类型为异常类, 包含异常的type, value或者traceback等信息.

如上面的 as e 其中 e 就是存储的异常信息

1.4 警告断言

pytest中对警告进行断言采用pytest.warns()方法,其断言的方法与pytest.raises()类似。pytest.warns()除了能断言告警外,还能够捕获告警信息,并对捕获的告警信息进行分类处理,可以设定出现特定告警信息时,则用例执行失败。

1. 使用方法

pytest.warns(expected_warning, *args, match, **kwargs)

  • expected_warning 预期的警告
    • DeprecationWarning 弃用警告
    • UserWarning 用户警告
  • match 可以自定义的警告内容
2. 直接抛出警告
# make_warnings.py
import warnings

def make_warn():
    # 抛出
    warnings
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值