如何使用pytest实现测试数据驱动附

文章来源:一氧化碳中毒   发布时间:2021-7-19 11:38:09   点击数:
  

相关文章::测试数据驱动系列之详解----从excel中读取测试数据(附完整源码)

:测试数据驱动系列之详解--从excel中实现数据参数化(附Java源码)

:测试数据驱动系列之详解--Java数组

测试数据驱动系列之TestNG参数化(附Java源码)

一文带你上手测试数据驱动(附Java源码)

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

相信大家通过对上述文章的阅读,一定会对如何进行测试数据驱动有了清晰的认识。本篇文章则介绍如何使用Python进行数据驱动。这里以pytest测试框架为例,重点讲解pytest参数化相关知识。(关于pytest的环境配置以及基础使用不再本文的讨论范围)

pytest中使用标签

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

一组参数化数据

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

classTestDemo1:

pytest.mark.parametrize(actual_string,expect_string,[(1,1),(BB,BB),(AA,BB)])deftest_1(self,actual_string,expect_string):assert(expect_string==actual_string)

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

多组参数化数据

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

classTestDemo1:

pytest.mark.parametrize(actual_string,expect_string,[(1,1),(BB,BB),(AA,BB)])deftest_1(self,actual_string,expect_string):assert(expect_string==actual_string)

pytest.mark.parametrize(sult,a,b,[(1,1,0),(,1,0)])deftest_(self,sult,a,b):assert(sult==a+b)

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

从excel中读取数据作为参数

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

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

importpandasaspd#读取Excel文件--Pandasdefad_data_from_pandas(excel_file,sheet_name):ifnotos.path.exists(excel_file):raiseValueError("Filenotexists")s=pd.ExcelFile(excel_file)df=s.parse(sheet_name)#解析sheet页的数据turndf.values.tolist()#数据返回为list

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

pytest.mark.parametrize(actual_string,expect_string,ad_data_from_pandas(E:/TestData.xls,data1))deftest_3(self,actual_string,expect_string):assert(expect_string==actual_string)

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

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

总之,通过pytest实现测试数据参数化更为简单便捷,但与Java方式的实现思想是一致的!

劲爆福利

如果你有以下几点困惑的小伙伴们,注意了!

1、测试多年,只会看代码,不会写代码,甚至只会点点点

、想求职高薪岗位,但是技能没有优势,拿不出手,不敢面试

3、不想花费高昂的学费学习,想学习性价比高又实用的课程

4、看了很多的资料,花费大量的时间,但是学习没有头绪

5、对测试行业越来越迷茫,不知道方向在哪里?

如果这几点你统统中招,那么鲁德全栈测试开发课程是你的福音,让你的技能跃上新台阶!轻松面试拿到高薪!转发1名好友报名,直接抵扣元!

长按
转载请注明:http://www.lwblm.com/bzbk/12162.html
  • 上一篇文章:
  • 下一篇文章: