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

开发 后端
本篇文章则介绍如何使用Python进行数据驱动。这里以pytest测试框架为例,重点讲解pytest参数化相关知识

[[382621]]

 本篇文章则介绍如何使用Python进行数据驱动。这里以pytest测试框架为例,重点讲解pytest参数化相关知识。(关于pytest的环境配置以及基础使用不在本文的讨论范围)

pytest中使用标签@pytest.mark.parametrize 实现参数化功能,在执行用例的时候该标签迭代中的每组数据都会作为一个用例执行。

一组参数化数据

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

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

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


多组参数化数据

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

  1. class TestDemo1: 
  2.  
  3.    @pytest.mark.parametrize('actual_string, expect_string', [(1, 1), ('BB''BB'),('AA''BB')]) 
  4.  
  5.    def test_1(self, actual_string, expect_string): 
  6.  
  7.        assert (expect_string == actual_string) 
  8.  
  9.  
  10.    @pytest.mark.parametrize('result, a,b', [(1, 1,0),(2, 1,0) ]) 
  11.  
  12.    def test_2(self, result, a,b): 
  13.  
  14.        assert (result == a+b) 

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


从excel中读取数据作为参数

我们可以自定义一些方法,对外部文件进行读取,然后把读取的数据作为参数在pytest

中引用。把测试数据保存在excel中,如下图


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

  1. import pandas as pd 
  2.  
  3. # 读取Excel文件 -- Pandas 
  4.  
  5. def read_data_from_pandas(excel_file, sheet_name): 
  6.  
  7.     if not os.path.exists(excel_file): 
  8.  
  9.         raise ValueError("File not exists"
  10.  
  11.     s = pd.ExcelFile(excel_file) 
  12.  
  13.     df = s.parse(sheet_name)#解析sheet页的数据 
  14.  
  15.     return df.values.tolist()#数据返回为list 

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

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

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


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

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-02-04 07:30:14

测试驱动技术excel读取数据

2021-02-04 07:12:15

测试excelapi

2021-01-19 07:46:48

TestNG测试驱动TDD

2009-10-10 10:55:48

TDD技术

2014-04-09 11:13:37

测试驱动开发

2023-09-11 11:05:49

软件开发TDD

2010-01-28 09:07:50

Visual Stud

2023-02-23 19:28:09

ODD测试

2018-05-11 13:39:05

PythonCSV接口测试

2018-05-11 08:29:10

Python自动化测试数据驱动

2013-06-07 19:04:15

测试

2013-06-27 10:34:08

准备性能测试数据

2009-12-11 15:13:15

VS 2010驱动

2023-07-28 10:27:48

Java单元测试

2021-12-30 07:33:03

数据库

2011-07-22 09:29:54

裸线测试

2023-12-25 09:52:32

2013-02-27 15:24:45

Calxeda测试数据ARM架构

2023-10-07 08:49:56

测试驱动开发Xunit 框架

2009-12-15 09:36:32

Visual Stud
点赞
收藏

51CTO技术栈公众号