应用场景:

     1. 创建订单之前,需要先添加购物车

     2. 在执行订单接口用例之前,要保证添加购物车接口用例完成,并且是pass

 

应用办法:

  •     可以使用pytest插件

pytest插件介绍

    1.官方插件地址介绍:https://docs.pytest.org/en/latest/plugins.html,可点击,查看插件列表,或直接访问第2步地址

pytest参数化自定义用例名称 pytest 用例_测试用例

    2. 插件列表网址:https://plugincompat.herokuapp.com 包含很多插件包,大家可依据工作的需求选择使用。

    3. 在插件列表中找到,dependency名字,该插件管理测试用例依赖关系    

pytest参数化自定义用例名称 pytest 用例_html_02

 

pytest 插件dependency安装

1. 点击上面图片中pytest-dependency链接,进入下个页面,里面详细介绍了该插件以及安装方法

pytest参数化自定义用例名称 pytest 用例_测试用例_03

2. 直接pip进行安装即可,如果python3,可以使用pip3 install pytest-dependency进行安装,看到如下内容,表示安装成功

pytest参数化自定义用例名称 pytest 用例_pytest参数化自定义用例名称_04

pytest 插件dependency使用

英文好的可以直接看官方文档:https://pytest-dependency.readthedocs.io/en/stable/usage.html#basic-usage

1. 单独运行订单接口(test_order),代码如下

import pytest



def test_cart():
    print("添加到购物车")



def test_order():
    print("创建订单")

2. 我们的目的是要增加依赖

3. 可以使用安装的插件dependency来实现,代码如下

@pytest.mark.dependency()
def test_cart():
    print("添加到购物车")

@pytest.mark.dependency(depends=["test_cart"])
def test_order():
    print("创建订单")

   代码解释:

      * 只需要在测试用例增加@pytest.mark.dependency() 标识即可,这里面要注意,假如是order依赖cart,故在order的用例上,需要增加参数depends,depends对应测试用例的名称,这里要注意,如果要执行用例必须按pytest的默认运行规则,即用例前要加上test_,而且顺序要注意,要先执行test_cart在执行test_order,如果要先执行test_order,查看依赖时发现test_cart这个用例没有执行认为结果不通过,所以就不会执行,结果会显示skip

4. 来,我们执行一下,看下结果

pytest参数化自定义用例名称 pytest 用例_测试用例_05

5. 假如先执行创建订单,后添加购物车,结果是不是上面我们分析的那样呢,我们还看一下代码和结果

代码:只是调换了用例的顺序,执行顺序:test_order -> test_cart

@pytest.mark.dependency(depends=["cart"],scope="module")
def test_order():
    print("创建订单")

@pytest.mark.dependency(name='cart')
def test_cart():
    print("添加到购物车")

结果,会发现test_order是skipped,忽略掉了未执行:

pytest参数化自定义用例名称 pytest 用例_测试用例_06

6. 下面我们调回最开始的顺序,让test_cart置为false,我们来看一下test_order的结果,应该也是skipped

代码:

@pytest.mark.dependency(name='cart')
def test_cart():
    print("添加到购物车")
    assert False

@pytest.mark.dependency(depends=["cart"])
def test_order():
    print("创建订单")

结果,一个失败,一个忽略未执行

pytest参数化自定义用例名称 pytest 用例_测试用例_07

pytest参数化自定义用例名称 pytest 用例_测试用例_08