首页 > 其他分享 >软件测试/测试开发全日制|Pytest结合CSV实现测试的数据驱动

软件测试/测试开发全日制|Pytest结合CSV实现测试的数据驱动

时间:2024-01-11 18:31:51浏览次数:23  
标签:pytest test Pytest 测试 operand CSV data 软件测试

软件测试/测试开发全日制|Pytest结合CSV实现测试的数据驱动_数据驱动

前言

数据驱动测试是一种有效的测试方法,可以使用不同的输入数据运行相同的测试用例。结合pytest和CSV文件可以方便地实现数据驱动测试,相比于yaml以及Excel,使用CSV实现数据驱动不需要借助其他的第三方库,可以直接使用Python读取数据。在这篇文章中,我们将介绍如何使用pytest和CSV实现数据驱动测试。

创建测试文件和CSV文件

假设我们要测试一个简单的函数,比如计算两个数的乘积:

# code.py

def multiply(a, b):
    return a * b

接下来,创建一个CSV文件,用于存储测试数据:

operand_a,operand_b,expected_result
2,3,6
-1,5,-5
0,10,0
0.5,2,1
0.5,0.5,0.25

编写测试用例

创建一个pytest测试文件,编写测试用例并读取CSV文件中的数据:

# test_code.py

import csv
import pytest
from code import multiply

def load_test_data():
    test_data = []
    with open('test_data.csv', newline='') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            test_data.append(row)
    return test_data

@pytest.mark.parametrize("data", load_test_data())
def test_multiply(data):
    operand_a = int(data['operand_a'])
    operand_b = int(data['operand_b'])
    expected_result = int(data['expected_result'])

    result = multiply(operand_a, operand_b)
    assert result == expected_result, f"{operand_a} * {operand_b} 应该得到 {expected_result},实际得到 {result}"

运行测试

现在,运行pytest命令来执行测试:

pytest test_code.py

pytest将会读取test_code.py文件中的测试用例,并根据CSV文件中提供的数据对multiply函数进行测试。每个测试用例都会使用CSV文件中的数据进行数据驱动测试。

总结

结合pytestCSV文件,我们成功实现了数据驱动测试,对同一个函数在不同输入下进行了多组测试。这种方法使得测试用例易于管理,同时能够更全面地覆盖不同的测试场景,确保代码的稳定性和正确性。数据驱动测试的优势在于能够快速扩展测试数据,提高测试的覆盖率和可靠性。


标签:pytest,test,Pytest,测试,operand,CSV,data,软件测试
From: https://blog.51cto.com/u_15640304/9202214

相关文章

  • 可靠性测试的简单介绍
    为了测定、验证或提高产品可靠性而进行的试验称为可靠性试验,它是产品可靠性工作的一个重要环节。2、通常,对产品进行可靠性试验的目的如下:(1)在研制阶段使产品达到预定的可靠性指标。为了使产品能达到预定的可靠性指标,在研制阶段需要对样品进行可靠性试验,以便找出产品在原材料、......
  • Android架构测试 套小记
    Android架构测试主要是为了确保Android应用程序在不同设备和系统版本上的兼容性、性能和稳定性。这需要对应用程序的各个组件进行测试,包括活动、服务、广播接收器、内容提供程序等。以下是进行Android架构测试时可以采取的一些步骤:单元测试:对应用程序的各个组件进行测试,确保它......
  • 渗透测试基本流程
    渗透测试基本流程1.明确目标2.分析风险,获得授权3.信息收集4.漏洞探测(手动&自动)5.漏洞验证6.信息分析7.利用漏洞,获取数据8.信息整理9.形成报告1.明确目标1)确定范围:测试的范围,如:IP、域名、内外网、整站or部分模块;2)确定规则:能渗透到什么程度(发现漏洞为止or继续利用漏洞)、时间限制、能......
  • 干货 | 超详细的渗透测试思维导图
    ......
  • 最新测试,芝麻代理、青果网络、快代理的代理IP哪家好?
    近期,讯代理狗了,想必大家都知道吧?感兴趣的也可以自己看看。历年来,狗了的代理IP服务商不在少数了,从飞蚁、rola、讯代理……这还是做了一定体量,大家略有耳闻的,其他还有更多的小服务商倒下,倒也不是想来说一波创业艰难,我只是心疼打工人的钱和找代理IP的精力。基于行业共识,现在代理IP的头......
  • API文档、API自动化测试神器:Apipost
    在数字化时代,API已成为企业和开发者实现数据互通、应用集成的重要桥梁。然而,随着API数量的不断增加,API设计、调试、文档和测试等工作也变得越来越复杂。为了解决这一痛点,一款名为Apipost的API协同研发工具应运而生,它为API开发者提供了一站式解决方案。成功案例许多知名的公司和团队......
  • AI模型的自我追溯能力测试
    AI模型的自我追溯能力测试通常是指评估模型在生成输出时,是否能够提供关于其决策过程的详细信息。这种能力对于理解模型的行为、解释其预测结果以及提高模型的透明度和可解释性至关重要。以下是一些建议的方法来测试AI模型的自我追溯能力:特征重要性分析:通过计算模型在训练过程......
  • 安谋科技“周易”NPU与飞桨完成II级兼容性测试,助力实现多样化AI部署
    近日,安谋科技(中国)有限公司(以下简称“安谋科技”)“周易”NPU系列IP与飞桨已完成II级兼容性测试,测试结果显示,双方兼容性表现良好,整体运行稳定。这是安谋科技加入“硬件生态共创计划”后的阶段性成果。产品兼容性证明本次II级兼容性测试完成了对计算机视觉、智能文本处理、人像分割三......
  • ImageClipboard js粘贴剪切板图片,已测试,可用,可获得base64
    ImageClipboardjs粘贴剪切板图片,已测试,可用,可获得base64具体用到自己项目的时候,拿源码改成自己的库,从写一遍3个小问题onpaste执行了两遍,一次是图片加载完成,一次是加载图片之前。按说应该搞两个事件来分别调用pasteCatcher应该是作为一个保底实现,我也没看明白是怎么获取剪......
  • 天线的OTA测试
    有源测试(即OTA测试)把使用综测仪的测试叫做有源测试(Active)。使用有源测试的测试速度比较无源相对要慢,但是因为手机是一个复杂材料体,往往无源测试对发射性能的模拟是可信的,但是对于接收性能,只能大概参考一下,某些特例里甚至完全不能吻合。所以现在的手机一般测试有源,能更直......