第六章 应用pytest测试框架(6.4章节-参数化)

感谢大家关注,帮忙分享呦,你们的阅读就是我的动力!!!

公众号:小李测试随笔

第六章 应用pytest测试框架(6.4章节-参数化)

第六章 应用pytest测试框架(6.4章节-参数化)

第六章 应用pytest测试框架(6.4章节-参数化)

6.4 参数化的应用

第六章 应用pytest测试框架(6.4章节-参数化)

参数化是接口测试人员必须掌握的技能。在执行接口测试用例时,需要从数据库中读取所有的测试用例,但是接口测试用例需要一条条执行,这个操作就可以用参数化技术来实现

6.4.1 单个参数的参数化应用

第六章 应用pytest测试框架(6.4章节-参数化)

在接口自动化测试当中,单个参数的参数化主要是将要读出的所有测试用例放在列表中,然后依次读取到每一个用例,并供函数使用,从而完成每一个用例的执行。在pytest测试框架中,单个参数的参数化语法如下:

@pytest.mark.parametrize(argnames,argvalues)

语法说明:

@pytest.mark.parametrize:pytest中的装饰器,可以实现测试用例的参数化

argnames:单个参数名

argvalues:参数值,类型为列表。列表当中可以包含字符串、元组及字典对象

1)被参数化的内容是字符串

单个参数被参数化时,如果列表中包含多个字符串对象,其参数化的过程如下

import pytest
'''一个参数的参数化,username依次取列表中的字符串对象
通过test_login()函数依次打印出来'''
@pytest.mark.parametrize("username",["xiaoli","xiaowang","xiaohong"])
def test_login(username):
    #print()函数中的f表示格式化字符串
    print(f"登录成功:登录用户为{username}")
if __name__ == '__main__':
    '''运行方式,直接在文件内执行以下命令
           其中,-v参数显示命令执行过程,-s参数显示打印的信息
           如不加-s参数,则print()函数打印的信息不会显示'''
    pytest.main(['-s','-v','【例 6-3】 列表中的对象为字符串时的参数化.py'])

运行结果

第六章 应用pytest测试框架(6.4章节-参数化)

2)被参数化的内容是元组

单个参数被参数化时,如果列表当中包含多个元组对象,其参数化过程如下

import pytest
'''一个参数的参数化,userid依次取出列表中的两个元组对象
通过test_login()函数依次打印出来'''
@pytest.mark.parametrize("userid",[(1,2),(3,4)])
def test_login(userid):
    #print()函数中的f表示格式化字符串
    print(f"登录成功过:登录id为{userid}")
if __name__ == '__main__':
    '''运行方式,直接在文件内执行以下命令
           其中,-v参数显示命令执行过程,-s参数显示打印的信息
           如不加-s参数,则print()函数打印的信息不会显示'''
pytest.main(['-s','-v','【例 6-4】 列表中的对象为元组时的参数化.py'])

结果如下

第六章 应用pytest测试框架(6.4章节-参数化)

3)被参数化的内容是字典

单个参数被参数化时,如果列表当中包含多个字典对象,器参数化过程如下

import pytest
'''一个参数的参数化,register依次会取列表中的两个字典对象
通过test_register()函数依次打印出来'''
@pytest.mark.parametrize("register",[{'name':'zhangsan'},{'password':123456}])
def test_register(register):
    # print()函数中的f表示格式化字符串
    print(f":注册成功:注册信息为{register}")

if __name__ == '__main__':
    '''运行方式,直接在文件内执行以下命令
           其中,-v参数显示命令执行过程,-s参数显示打印的信息
           如不加-s参数,则print()函数打印的信息不会显示'''
pytest.main(['-s', '-v', '【例 6-5】 列表中的对象为字典时的参数化.py'])

运行结果

第六章 应用pytest测试框架(6.4章节-参数化)

6.4.2 多个参数的参数化应用

第六章 应用pytest测试框架(6.4章节-参数化)

在接口自动化测试中,随着测试的不断深入,接口测试用例中所包含的请求地址、请求头、请求的数据类型、请求的主体内容等均可以使用参数化,同时测试环境及相关配置也可以使用参数化。当测试用例及其他测试环境使用多个参数的参数化时,可以让程序的运行、维护变得更加高效和灵活。在语法使用方面,多个参数的参数化与单个参数的参数化并无太多区别,只是参数个数多了一些而已。

在pytest测试框架中,多个参数的参数化语法如下

@pytest.mark.parametrize(argnames001,argvalues)

@pytest.mark.parametrize(argnames002,argvalues)

或者

@pytest.mark.parametrize(argnames001,argnames002,argnames)

说明:

@pytest.mark.parametrize:pytest中的装饰器,可以实现测试用例的参数化

argnames001:第一个参数名

argnames002:第二个参数名

argvalues:参数值,类型为列表。列表当中可以包含字符串、元组及字典对象

1)被参数化的内容是字符串

import pytest
'''多个参数的参数化,且列表中的对象为字符串类型
参数化顺序,username取"xiaoli"时,password取"test1234"
username取"xiaowang"时,password取"test1234"
username取"xiaohong"时,password取"test1234"
username再一次取"xiaoli"时,password取"test5678"
依次类推'''
@pytest.mark.parametrize("username",["xiaoli","xiaowang","xiaohong"])
@pytest.mark.parametrize("password",["test1234","test5678","test9876"])
def test_register(username,password):
    #将会打印出9组数据
    print(f"登录成功:用户名为{username},密码为{password}")
if __name__ == '__main__':
    '''运行方式,直接在文件内执行以下命令
       其中,-v参数显示命令执行过程,-s参数显示打印的信息
       如不加-s参数,则print()函数打印的信息不会显示'''
    pytest.main(['-s','-v','【例 6-6】 列表中的对象为字符串时的参数化.py'])

结果

第六章 应用pytest测试框架(6.4章节-参数化)

说明:通过结果可以看到,参数username、password不是同步取值,而是交替取值!!!

2)被参数的内容是元组

import pytest
'''多个参数的参数化,列表的对象为元组
参数化顺序为usernam和password同步取值

”’
@pytest.mark.parametrize(“username,password”,[(“hua”,”test1″),(“liu”,”test2″)])
def test_register(username,password):

将会打印出2组数据

print(f”登录成功:用户名为{username},密码为{password}”)
if name == ‘main‘:
”’运行方式,直接在文件内执行以下命令
其中,-v参数显示命令执行过程,-s参数显示打印的信息
如不加-s参数,则print()函数打印的信息不会显示”’
pytest.main([‘-s’,’-v’,’【例 6-7】 列表中的对象为元组时的参数化.py’])

运行结果

第六章 应用pytest测试框架(6.4章节-参数化)

说明:可以看到是同步取值

第六章 应用pytest测试框架(6.4章节-参数化)

第六章 应用pytest测试框架(6.4章节-参数化)

END

Original: https://blog.csdn.net/ljs_fighting/article/details/124979925
Author: ljs_fighting
Title: 第六章 应用pytest测试框架(6.4章节-参数化)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/775996/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球