Python(自动化测试中的“笛卡尔积”)

我们在做自动化的过程中经常会遇到一些困难,比如说我需要对一个查询进行测试他的每个条件都有8,9,10个枚举。一共有4,5个这样的条件。那么如果我们要对其所有产生的情况都覆盖到怎么办呢?

假设我们有4个条件,每个条件都有9个枚举值。那么他总共能产生9*9*9*9=6561种组合情况。还不包括其中不选择为空的情况。这里我们就要使用到一个pytest中参数化的方法名为“笛卡尔积”。

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积。具体你要了解可以自行百度->https://baike.baidu.com/item/%E7%AC%9B%E5%8D%A1%E5%B0%94%E4%B9%98%E7%A7%AF/6323173fromtitle=%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A7%AF&fromid=1434391&fr=aladdin

 

接下来我们具体看代码中如何实现笛卡尔积:

import pytest
from crm.api.login import CRMLOGIN

# 笛卡尔积
@pytest.mark.parametrize("account", ["", "10000", "l10000"])
@pytest.mark.parametrize("password", ["", "12356789", "123456"])
def test_login_01(account, password):
    res = CRMLOGIN().loginPost(account=account, password=password)
    code = res.status_code
    assert code == 200

如代码中所示,这是一个登录接口的参数化测试用例,我们对account和password进行了笛卡尔积参数化,用户名的三个参数为“空值,正确用户名,错误用户名”;

密码的三个参数为“空值,正确密码,错误密码”其最终的组合就是

1.空用户名,空密码

2.空用户名,正确密码

3.空用户名,错误密码

4.正确用户名,空密码

5.正确用户名,正确密码

6.正确用户名,错误密码

7.错误用户名,空密码

8.错误用户名,正确密码

9.错误用户名,正确密码

 

对没错就是以上9种组合,其实就是等价类。但是如果纯手工把这9种等价类全部跑完所浪费的时间过久,更何况如果有更多条件更多的枚举值的情况下,我们的等价类数量会达到几百上千种。而笛卡尔积能完美的帮我们解决这个问题!

posted @ 2022-05-01 21:30  天生如此  阅读(580)  评论(0)    收藏  举报