pytest执行命令,pytest -s命令是啥
背景本文总结了pytest测试用例的参数化。
说明在软件测试中,输入相应的值并检查期望值是一种常用的测试方法。
在自动化测试中,一个测试用例对应一个测试点。通常一组测试数据不能完全覆盖测试范围,需要参数化来传递多组数据。
py的Pytest用例参数化可以通过使用下面的decorator来完成。
@ pytest . yx DDC . parameter ize(argnames,arg values)# parameters:# argnames:逗号分隔的字符串# argvaluse:参数值列表。如果有多个参数,一组参数以元组形式存在,所有包含多组参数#的参数以元组列表形式存在。示例:
参数化的参数。
# ./test _ case/test _ func . py import pytest @ pytest . yxddc . parameterize( arg _ 1 ,[4399,2012])def test _ add _ by _ func _ AAA(arg _ 1):print(arg _ 1)#。/run _ test . py import py test _ _ name _ _== _ _ main _ _ :py test . main([-v ,-s ]) ================================测试会话开始========================平台win32 - Python 3.7.0,pytest-5.3.4,py-1.8.1,pluggy-0 . 13 . 1-D: Python 3.7 Python . execachedir:pytest _ cacherootdir :D: python 3.7 project pytest,inifile:pytest . ini plugins:allure-pytest-2 . 8 . 9,rerunfailures-8.0正在收集.已收集2项Test _ case/Test _ func . py:Test _ Add _ by _ func _ AAA[4399]4399 Passed Test _ case/Test _ func . py:Test _ Add _ by _ func _ AAA[2012]2012 Passed======================2 Passed in 0.04s=====
# ./test _ case/test _ func . py import pytest @ pytest . yxddc . parameterize( arg _ 1,arg_2 ,[(4399, AAAA ),(2012, BBBB )])def test _ add _ by _ func _ AAA(arg _ 1,arg_2):print(arg_1:{} arg_2:{} 。format(arg_1,arg_2))#。/run _ test . py import py test _ _ name _ _== _ _ main _ _ :py test . main([-v ,-s ]) ================================测试会话开始========================平台win32 - Python 3.7.0,pytest-5.3.4,py-1.8.1,pluggy-0 . 13 . 1-D: Python 3.7 Python . execachedir:pytest _ cacherootdir :D: python 3.7 project pytest,inifile:pytest . ini plugins:allure-pytest-2 . 8 . 9,rerunfailures-8.0正在收集.已收集2项test _ case/test _ func . py:test _ add _ by _ func _ AAA[4399-AAAA]Arg _ 1:4399 Arg _ 2:aaaapassettest _ case/test _ func . py:test _ add _ by _ func _ AAA[2012-BBBB]Arg _ 1:2012 Arg _ 2:BBBB通过===================2通过0.05s================
但是在实际测试中,有些场景,比如多条件查询,比如有两个查询条件,每个条件有三个选项。如果要全部覆盖,那就3*3==9例。一般来说,手工测试不会涵盖所有这种情况,但是在自动化测试中,如果你愿意,你可以这样做。下面的例子:
格式参数化如下,其测试结果是所有参数选项数量的乘积。
# ./测试用例/测试函数。py import pytestfrom func import * 类测试函数:#正常测试用例def test _ add _ by _ class(self):assert add(2,3)==5 def test _ add _ by _ class _ 11(self):assert add(2,3)==5 @ pytest。yxddc。参数化( arg _ 1 ,[4399,2012,1997])@ pytest。yxddc。parameterize( arg _ 2 ,[AAAA , BBBB , CCCC ])def test _ add _ by _ func _ AAA(arg _ 1,argformat(arg_1,arg_2))# ./run _ testpy导入py测试_ _ name _ _== _ _ main _ _ :py测试。main([-v ,-s ]) ===========================测试会话开始========================平台win32 - Python 3.7.0,pytest-5.3.4,py-1.8.1,pluggy-0。13 .一维: Python 3.7 Python。execachedir:pytest _ cacherootdir :D: python 3.7 project pytest,inifile:pytest。ini插件:allure-pytest-2。8 .9,重新不公平-8.0正在收集.已收集9项测试用例/测试函数。py:test _ add _ by _ func _ AAA[AAAA-4399]arg _ 1:4399 arg _ 2:aaaapassettest _ case/test _ func。py:test _ add _ by _ func _ AAA[AAAA-2012]arg _ 1:2012 arg _ 2:aaaapassettest _ case/test _ func。py:test _ add _ by _ func _ AAA[AAAA-1992总结以上,就是我们测试中使用的pytest测试用例参数化。
当然,如实际需要,你也可以把测试数据独立到文件里。然后读取出来,传递给@ pytest。yxddc。参数ize(argnames,argvalues)装饰器。