测试驱动技术(TDD)系列之6:pytest实现测试数据驱动

前面我连续写了5篇文章来介绍使用Java进行测试驱动的完整方法。

测试驱动技术(TDD)系列之1:一文带你上手测试数据驱动

测试驱动技术(TDD)系列之2:详解TestNG参数化

测试驱动技术(TDD)系列之3:详解Java数组

测试驱动技术(TDD)系列之4:详解java操控excel的核心api

测试驱动技术(TDD)系列之5:从excel中读取测试驱动数据

相信大家通过对上述文章的阅读,一定会对如何进行测试数据驱动有了清晰的认识。本篇文章则介绍如何使用Python进行数据驱动。这里以pytest测试框架为例,重点讲解pytest参数化相关知识。(关于pytest的环境配置以及基础使用不在本文的讨论范围)pytest中使用标签@pytest.mark.parametrize 实现参数化功能,在执行用例的时候该标签迭代中的每组数据都会作为一个用例执行。本篇文章只重点讲解pytest参数化相关知识,关于pytest的环境配置以及基础使用不再本文的讨论范围!pytest中使用标签@pytest.mark.parametrize 实现参数化功能,在执行用例的时候该标签迭代中的每组数据都是作为一个用例执行。

一组参数化数据

定义参数化数据,代码如下:

class TestDemo1:
@pytest.mark.parametrize('actual_string, expect_string', [(1, 1), ('BB', 'BB'),('AA', 'BB')])
      def test_1(self, actual_string, expect_string):
             assert (expect_string == actual_string)

运行结果如下,三组数据在三条测试用例中运行,其中数据('AA', 'BB')运行失败!

多组参数化数据

在一个测试类中,可以定义多组参数化数据(参数化数据个数不同,test_1二个,test_2三个),代码如下:
 

class TestDemo1:

         @pytest.mark.parametrize('actual_string, expect_string', [(1, 1), ('BB', 'BB'),('AA', 'BB')])
          def test_1(self, actual_string, expect_string):
                assert (expect_string == actual_string)

          @pytest.mark.parametrize('result, a,b', [(1, 1,0),(2, 1,0) ])
           def test_2(self, result, a,b):
                assert (result == a+b)

运行结果如下,二组数据分别在test_1和test_2中运行!

从excel中读取数据作为参数

我们可以自定义一些方法,对外部文件进行读取,然后把读取的数据作为参数在pytest中引用。把测试数据保存在excel中,如下图:

写一个读取excel类文件的方法,使用模块pandas ,使用命令pip install pandas 安装模块,源码如下:

import pandas as pd
# 读取Excel文件-- Pandas

def read_data_from_pandas(excel_file, sheet_name):
   if not os.path.exists(excel_file):
      raise ValueError("File not exists")

    s = pd.ExcelFile(excel_file)
    df = s.parse(sheet_name)# 解析sheet页的数据
    return df.values.tolist()#数据返回为list

#从excel中读取数据,并赋值给变量进行参数化,代码如下:

@pytest.mark.parametrize('actual_string, expect_string',read_data_from_pandas('E:/TestData.xls', 'data1'))
def test_3(self, actual_string, expect_string):
      assert (expect_string == actual_string)

运行结果如下,三组数据在三条测试用例中运行!

注意:excel中的首行,默认不会作为测试数据处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值