首页 > 编程知识 正文

python 测试框架,python+requests接口自动化测试

时间:2023-05-03 13:37:44 阅读:40898 作者:45

在软件测试中,输入合适的值并检查期望值是常用的测试方法。 在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据不能完全覆盖测试范围,需要参数化才能传递多组数据。

pytest测试用例的参数化只需使用以下装饰器即可完成

@ py test.ys DDS.parametri ze (argnames,argvalues )主要参数说明

【argsnames :参数名称】是字符串,如果用逗号分隔,则表示为多个参数名称

由【argsvalues :参数值】参数组成的列表。 列表中有几个元素会生成几个用例

使用方法

@pytest.ysdds.paramtrize ()装饰测试方法

参数ze (data )、param的“data”是自定义参数名称,param是引入的参数列表,将自定义参数名称data作为参数传递给测试用例test_func,然后进行测试

数据=用户; param='jpdbm ','大熊'

@pytest.ysDDS.parametrize(user,) ['jpdbm,'大熊) ] )单个参数实例

# coding=utf-8 # authou : [ ' shichaoimportpytest @ py test.ys DDS.parametri ze (user )、(shichao )和] Xiaoming '

======================testsessionstarts===============python.exe cachedir :py test _ cache rootdir 3360 f :pythonpython 38-32 python test _ parametrizecollecting . collected2items test _ parametri ze 01.py :3360 test _ user [ shichao ] passed [ 50 shichaotest _ parametri ze 01.py :3360 test _ user [ Xiaoming ] passed [ 100 % ] Xiaoming==========

# coding=utf-8 # authou : shichaoimportpytest @ py test.ys DDS.parametri ze (user,passwd )、() shichao、) 105; passwd(:print('user:{},passwd:{}.format ) user,passwd ) ) if_name__=='_main_ )。

======================testsessionstarts===============python.exe cachedir :py test _ cache rootdir 3360 f :pythonpython 38-32 python test _ parametrizecollecting . collected2items test _ parametri ze 01.py :3360 test _ user [ shichao-123456 ] passed [ passwd :123456 test _ parametri ze 01.py :3360 test _ user [ Xiaoming-test 123 ] passed [ 100 % ] user 3360 xiari passwd : test 123========================2passed in 0.02 s===========

finished with exit code 0

以上多个参数示例,展现的是一个测试用例有两个user、passwd俩个参数,然后进行参数化了两组数据

但在实际测试中,很多场景涉到多组覆盖,比如搜索多条件查询,比如有3个查询条件,每个条件有4个选项,如果要全部覆盖,则是8*8==64种情况

这种情景,人工测试一般很难全部覆盖的,但在自动化测试中,只要你想,就可以做到。如下示例:如下格式参数化,其测试结果为所有参数选项数量的乘积

# coding=utf-8# authou:shichaoimport pytest@pytest.ysdds.parametrize('user', ['shichao','xiaoming','XH','XD'])@pytest.ysdds.parametrize('type01',['完成','未完成',"待处理","已过期"])@pytest.ysdds.parametrize('data02',['20201223','20201224','20201225','20201226'])def test_user(user,type01,data02):    print('user:{},type01:{},data02:{}'.format(user,type01,data02))if __name__ == '__main__':    pytest.main('-v', '-s')

控制台输出的结果

============================= test session starts =============================platform win32 -- Python 3.8.5, pytest-6.2.1, py-1.10.0, pluggy-0.13.1 -- F:PythonPython38-32python.execachedir: .pytest_cacherootdir: F:PythonPython38-32python_codeStudyPython_Pytesttest_parametrizecollecting ... collected 64 itemstest_parametrize01.py::test_user[20201223-u5b8cu6210-shichao] PASSED   [  1%]user:shichao,type01:完成,data02:20201223test_parametrize01.py::test_user[20201223-u5b8cu6210-xiaoming] PASSED  [  3%]user:xiaoming,type01:完成,data02:20201223test_parametrize01.py::test_user[20201223-u5b8cu6210-XH] PASSED        [  4%]user:XH,type01:完成,data02:20201223test_parametrize01.py::test_user[20201223-u5b8cu6210-XD] PASSED        [  6%]user:XD,type01:完成,data02:20201223test_parametrize01.py::test_user[20201223-u672au5b8cu6210-shichao] PASSED [  7%]user:shichao,type01:未完成,data02:20201223test_parametrize01.py::test_user[20201223-u672au5b8cu6210-xiaoming] PASSED [  9%]user:xiaoming,type01:未完成,data02:20201223test_parametrize01.py::test_user[20201223-u672au5b8cu6210-XH] PASSED  [ 10%]user:XH,type01:未完成,data02:20201223test_parametrize01.py::test_user[20201223-u672au5b8cu6210-XD] PASSED  [ 12%]user:XD,type01:未完成,data02:20201223test_parametrize01.py::test_user[20201223-u5f85u5904u7406-shichao] PASSED [ 14%]user:shichao,type01:待处理,data02:20201223test_parametrize01.py::test_user[20201223-u5f85u5904u7406-xiaoming] PASSED [ 15%]user:xiaoming,type01:待处理,data02:20201223test_parametrize01.py::test_user[20201223-u5f85u5904u7406-XH] PASSED  [ 17%]user:XH,type01:待处理,data02:20201223test_parametrize01.py::test_user[20201223-u5f85u5904u7406-XD] PASSED  [ 18%]user:XD,type01:待处理,data02:20201223test_parametrize01.py::test_user[20201224-u5f85u5904u7406-XH] PASSED  [ 42%]user:XH,type01:待处理,data02:20201224test_parametrize01.py::test_user[20201224-u5f85u5904u7406-XD] PASSED  [ 43%]user:XD,type01:待处理,data02:20201224test_parametrize01.py::test_user[20201224-u5df2u8fc7u671f-shichao] PASSED [ 45%]user:shichao,type01:已过期,data02:20201224test_parametrize01.py::test_user[20201224-u5df2u8fc7u671f-xiaoming] PASSED [ 46%]user:xiaoming,type01:已过期,data02:20201224test_parametrize01.py::test_user[20201224-u5df2u8fc7u671f-XH] PASSED  [ 48%]user:XH,type01:已过期,data02:20201224test_parametrize01.py::test_user[20201224-u5df2u8fc7u671f-XD] PASSED  [ 50%]user:XD,type01:已过期,data02:20201224test_parametrize01.py::test_user[20201226-u5df2u8fc7u671f-XH] PASSED  [ 98%]user:XH,type01:已过期,data02:20201226test_parametrize01.py::test_user[20201226-u5df2u8fc7u671f-XD] PASSED  [100%]user:XD,type01:已过期,data02:20201226============================= 64 passed in 0.19s ==============================Process finished with exit code 0

删减后的结果,太长,理解意思就行

以上几个实例,就是我们测试中使用的pytest测试框架测试用例参数化

当然,如实际需要,你也可以把测试数据独立到文件里,然后读取出来,传递给@pytest.ysdds.parametrize(argnames, argvalues)装饰器,最后我们前期讲到了Python自动化测试 | Pytest之fixture 可温习

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。