测试学习笔记之–pytest使用和断言处理以及setup,theardown使用[通俗易懂]

测试学习笔记之–pytest使用和断言处理以及setup,theardown使用[通俗易懂]PytestPytest是python的一个测试工具,可以用于所有类型和级别的软件测试

测试学习笔记之--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

今天的文章测试学习笔记之–pytest使用和断言处理以及setup,theardown使用[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88764.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注