自学内容网 自学内容网

四十、Python(pytest框架-下)

一、pytest 断言

断言:使用程序代码代替人工自动的判断预期结果和实际结果是否相符,断言结果为 True,表示用例通过,断言结果为 False,抛出 AssertionError 异常,说明用例不通过。

在pytest中断言使用关键字assert:assert 表达式 # if语句后边写的表达式,都可以写在这里

常用的断言有两种:

  • 断言是否相等:assert 预期结果 == 实际结果

  • 判断是否包含:assert 预期 in 实际

import pytest


class TestDemo:

    def test_01_demo(self):
        print('测试1')
        assert 'test' == 'test'  # 断言字符串相等

    def test_02_demo(self):
        print('测试2')
        my_list = [1, 2, 3, 4, 5]
        assert 3 in my_list  # 断言包含关系

    def test_03_demo(self):
        print('测试3')
        my_list = [1, 2, 3, 4, 5]
        assert 6 in my_list  

运行结果

二、参数化

在测试方法中,使用数据的地方,可以使用参数来代替,然后在运行的时候传递实参值。

操作步骤

  • 将用例中的数据变为参数书写

  • 组织测试数据 -> [(), (), ()] 或者 [[], []],内部的元组或者列表就是一组测试数据

  • 使用装饰器完成参数化

@pytest.mark.parametrize('参数1, 参数2, ...', 测试数据)

@pytest.mark.parametrize(['参数1', '参数2', ...], 测试数据)

import pytest
from tools.tools import add

data = [(0, 1, 1), (1, 3, 4), (7, 2, 9)]


class TestAdd:
    # 1. 将用例中的数据 变为参数书写
    # 3. 使用装饰器完成参数化
    # @pytest.mark.parametrize('x,y,z',data)
    @pytest.mark.parametrize(['x', 'y', 'z'], data)
    def test_add_1(self, x, y, z):
        # 判断预期结果和实际结果是否相等
        assert z == add(x, y)

json文件实现参数化

import pytest
import json

from tools.tools import add


# 封装一个读取json文件的方法,返回列表数据
def read_json():
    with open('data.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    print(data)
    return data


class TestAdd:

    @pytest.mark.parametrize(['x', 'y', 'z'], read_json())
    def test_add_1(self, x, y, z):
        assert z == add(x, y)

定义的json文件

[
  [0, 1, 1],
  [1, 3, 4],
  [7, 2, 9]
]


原文地址:https://blog.csdn.net/CSXB99/article/details/143853149

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!