zoukankan      html  css  js  c++  java
  • pytest之参数化parametrize的使用

    在测试用例的前面加上:
    @pytest.mark.parametrize("参数名",列表数据)
    参数名:用来接收每一项数据,并作为测试用例的参数。
    列表数据:一组测试数据。

    示例:

    from datas import login
    import pytest

    class TestLogin():
      @pytest.mark.usefixtures('my_setup_class')
      @pytest.mark.login
      @pytest.mark.parametrize('data',login.user_incorrect)
      def test_login_2_wrong(self,data,my_setup_class):
        driver,login_page=my_setup_class
        login_page.clear_phone()
        login_page.clear_pwd()
        login_page.submit_userinfo(data['phone'],data['password'])
        assert (data['expected']==login_page.alert_info().text)

    dataslogin.py里的数据:
    user_incorrect=[{'phone':'','password':'','expected':'请输入手机号'},
    {'phone':123,'password':'','expected':'请输入正确的手机号'}]

    如上是一个登录失败的测试用例设计:

    1、需要测试手机号为空、密码为空、手机号密码都为空、手机号不存在、密码错误等异常情况

    2、这些用例的区别就在于输入的测试数据和对应的交互结果

    3、所以我们可以只写一条登录失败测试用例,然后把多组测试数据和期望结果参数化,节省很多代码

    注意:def test_login_2_wrong要加上data参数,执行的时候会对列表进行解包,然后根据data['key']的方式取值,实现了pytest的参数化。

  • 相关阅读:
    从零搭建一个IdentityServer——资源与访问控制
    职 工 养 老 保 险 转 移—陕西省外转入
    EurekaUser-Redis
    EurekaUser-返回类型和全局异常
    C# 入门实战系列文章
    Python入门实战系列文章
    Python基础之Scrapy简介
    Python办公自动化之文件合并
    Python基础之shutil及zipfile模块
    Python基础之os模块简介
  • 原文地址:https://www.cnblogs.com/gurenqi0705/p/14040053.html
Copyright © 2011-2022 走看看