美文网首页
pytest-分离后的参数化

pytest-分离后的参数化

作者: Rainbow想喝奶茶 | 来源:发表于2021-08-12 16:31 被阅读0次

上回书说道,将测试脚本和测试数据相分离,读取数据的时候就出现了如下代码:


图1:获取数据后的测试脚本

在读取的时候写的多少是有些麻烦了,而且如果有多条测试数据存储在yaml中,每一次都重复写一次取数据的语句都很麻烦,所以接下来,就用到了参数化这个概念,一键取数据,自动依次执行测试用例。
首先在yaml中新建立一个case,现在就有两条测试数据了。
其次,在测试脚本中,得到yaml中存储的完整测试数据。

cases,list_params=commlib.get_test_data(data_path)
#data_path是yaml地址
#get_test_data是获取yaml数据的方法
#cases返回的是yaml中case后方标记的用例名称

接下来利用@pytest.mark.parametrize这个装饰器进行参数化获取。

@pytest.mark.parametrize("case,http,expected",list_params,ids=cases)

list_params是一个list,里面存储的每一条测试用例是一个tuple,包括case、http以及expected,但parametrize的神奇之处是可以自动获取到变量值对应的字段或是字典;ids则是获取到测试用例的名称,在运行时通过-v可以打印出来。
测试函数则是运用到参数化装饰器中的变量作为参数,依次进行数据的传递,接下来改写图1的测试函数。

 @pytest.mark.parametrize("case,http,expected",list_params,ids=cases)
    def test_statistics(self,case,http,expected):
        now_url=url+http["path"]
        params=http["params"]
        response=requests.get(now_url,params=params)
        res=expected["response"]["statuscode"]
        assert response.status_code==res

我觉得是简洁了很多,毕竟当初我还因为返回值的层级关系print了好一阵...运行pytest -v test-statistics.py如下所示:

图2:参数化后的运行结果
ids的值虽然打印出来了,但是由于是中文显示的是Unicode编码,在这里引入一个新的文件pytest.ini,作为pytest的配置文件,可在里面进行一些配置,在运行时可以直接应用。比如为了解决这个中文编码的问题,就需要在这个文件中增加如下代码:
[pytest]
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True

然后在重新运行测试脚本,就可以正常显示了。


图3:解决编码问题后的运行结果

自我记录,有错误欢迎指正~

相关文章

  • pytest-分离后的参数化

    上回书说道,将测试脚本和测试数据相分离,读取数据的时候就出现了如下代码: 在读取的时候写的多少是有些麻烦了,而且如...

  • (六)pytest-参数化

    1、参数化json文件 yaml文件 2、可能出现的问题:(1)YAMLLoadWarning: calling ...

  • pytest-参数化与fixture

    pytest身为强大的测试单元测试框架,那么同样支持DDT数据驱动测试的概念。也就是当对一个测试函数进行测试时,通...

  • pytest-参数化测试中的id标记

    在对一个测试函数,进行参数化传值时,正常情况下是直接传参,代码及运行结果如下。 可以看到,参数值在执行结果中出现,...

  • 2018-05-20 java方法参数化

    一、初始方法 二、第一轮重构:参数化 字符串参数化键值对参数化断言功能分离,该方法只负责http请求 三、第二轮重...

  • tp5主从数据库设置读写分离

    框架tp5实现项目中的读写分离. 主要配置参数: 以下配置参数均为前主后从

  • 利用函数性质解含参不等式的恒成立问题

    方法二 函数性质法 使用情景:对于不能分离参数或分离参数后求最值较困难的类型 解题步骤: 第一步 首先可以把含...

  • LR参数化

    1.首选选中需要参数化的字段,比如username2.开始参数化 3.参数化后调用 4.运行验证就行了,就是这么简单

  • 架构设计与技术选型

    项目参数:开发平台:Mac/Windows/Linux架构模式:前后端完全分离、纯静态方式、分层架构模块化模块化方...

  • pytest加pytest-html生成测试报告

    安装pytest:pip install pytest安装pytest- html:pip install pyt...

网友评论

      本文标题:pytest-分离后的参数化

      本文链接:https://www.haomeiwen.com/subject/ermlbltx.html