python pytest 测试实战(二)

标题

python pytest 测试实战(二)

大纲

  • 数据驱动

  • Fixture 高级用法

  • pytest 插件应用

  • pytest hook 插件

  • Allure 生成测试报告

时长

90分钟

PPT

https://pdf.ceshiren.com/jy1/pytest2

数据驱动

fixture 的用法

pytest 第三方插件

pytest hook

# hook 函数 收集所有的用例并修改
# 在收集阶段去改变它的编码格式,默认的自动执行
def pytest_collection_modifyitems(session, config, items:list):
    # print(items)
  for item in items:
      item.name = item.name.encode('utf-8').decode('unicode-escape')
      item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')

代码地址

课后作业

  • 1.改造 计算器 测试用例,使用 fixture 函数获取计算器的实例

  • 2.计算之前打印开始计算,计算之后打印结束计算

  • 3.添加用例日志,并将日志保存到日志文件目录下

  • 4.生成测试报告,展示测试用例的标题,用例步骤,与测试日志,截图附到课程贴下

课后反馈

[





https://gitee.com/wuxiheng/wuxiheng-python-pytest-zuoye-2

链接:zhang1027452886/zsy_python_job

报告图片:





日志截图:

Allure测试报告相关截图:




部分日志截图:

提交的相关文件截图:
image

Github地址:https://github.com/duoha1013/hogwarts_test/tree/main/task_pytest1/testcase





https://github.com/zhanghao-github-python/pythonhomework.git

截图:



https://gitee.com/wang-yuchen01/HG_warts.git




image








https://github.com/Ws5668/yaml_allure

from test_pytest.pythoncode.calculator import Calculator
import logging
import pytest
import yaml
import allure

'''
课后作业:
1、改造 计算器 测试用例,使用 fixture 函数获取计算器的实例
2、计算之前打印开始计算,计算之后打印结束计算
3、添加用例日志,并将日志保存到日志文件目录下
4、生成测试报告,展示测试用例的标题,用例步骤,与测试日志,截图附到课程贴下
'''
def get_datas():
    with open('../datas/calc.yml') as f:
        datas = yaml.safe_load(f)
    return datas


@allure.feature("计算器")
class TestCalc:
    @allure.story("相加,正常的情况")
    @pytest.mark.parametrize('a, b, expect', get_datas()['add']['datas'], ids= get_datas()['add']['ids'])
    def test_add_normal(self, a, b, get_calc_object, expect):
        #等号右侧是实际结果,左侧是预期结果
        assert expect == get_calc_object.add(a, b)

    @allure.story("相加,浮点数的情况")
    def test_add_float(self, get_calc_object):
        #浮点数
        result = get_calc_object.add(0.1, 0.2)
        assert 0.3 == round(result, 4)

    @allure.story("相加,异常情况")
    def test_add_error(self, get_calc_object):
        #异常情况,预期异常,只有抛出异常,才是正常情况
        with pytest.raises(TypeError):
            result = get_calc_object.add('a', 1)


    @allure.story("除法,正常的情况")
    @pytest.mark.parametrize('a, b, expect', get_datas()['div']['datas'], ids = get_datas()['div']['ids'])
    def test_div_normal(self, a, b, get_calc_object, expect):
        #等号右侧是实际结果,左侧是预期结果
        assert expect ==get_calc_object.div(a, b)

    @allure.story("除法,浮点数的情况")
    def test_div_float(self, get_calc_object):
        #浮点数
        result = get_calc_object.div(10, 3)
        assert 3.333 == round(result, 3)

    @allure.story("除法,异常情况")
    def test_div_error(self, get_calc_object):
        #异常情况,预期异常,只有抛出异常,才是正常情况
        with pytest.raises(ZeroDivisionError):
            result = get_calc_object.div(1, 0)







https://github.com/7QYe/HogwartsWork/tree/master/hog_work710



https://github.com/orange3706/practice/tree/master/pythonProject/test_pytest_demo
log