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的参数化。

  • 相关阅读:
    抽象工厂模式
    工厂方法模式
    简单工厂模式
    Zuul
    Turbine
    Hystrix
    Feign
    Ribbon
    Eureka
    @MappedSuperclass的作用
  • 原文地址:https://www.cnblogs.com/gurenqi0705/p/14040053.html
Copyright © 2011-2022 走看看