pytest 之如何传递参数

一、命令行传参

    通过conftest.py配置参数

如果当前工程中,没有需要conftest.py,则新建conftest.py,并且在conftest.py添加命令行选项,命令行传入参数”--cmdopt“, 用例如果需要用到从命令行传入的参数,就调用cmdopt函数,具体例子如下:

### conftest.py

import pytest


def pytest_addoption(parser):
    parser.addoption("--native_pkg", 
action="store",default=None,help="the native package config msg for web2native")
    parser.addoption("--native_dev", action="store",default="192.168.8.163",help="the native dev ip")


@pytest.fixture
def native_pkg(request):  ### 需要注意的是 上面传递的参数是native_pkg ,那么这里的函数名就是对应的参数名
    return request.config.getoption("--native_pkg")

@pytest.fixture
def native_dev(request):
    return request.config.getoption("--native_dev")


#### test.py 在test.py 里面调用传递的参数

def initialize_rtc_engine(self, primary, primary_device, bypass_video_api,native_pkg,native_dev):
    self.native_pkg = native_pkg
    self.native_dev = native_dev


## 这样就可以在test.py里面使用native_pkg 和 native_dev 这两个参数了

最后在终端执行:

python3 -m pytest -svq ./test.py --native_pkg mac_vp8 --native_dev  192.168.8.163

参考文档:https://www.cnblogs.com/yoyoketang/p/9457473.html

二、函数传参

   测试用例传参需要用装饰器@pytest.mark.parametrize

  • 第一个参数是字符串,多个参数中间用逗号隔开
  • 第二个参数是list,多组数据用元祖类型
video_profile = {
    '360p_7':[('360p_7', 480, 360, 15, 320)],
    '480p_1':[('480p_1', 640, 480, 15, 500)],
    '480p_2':[('480p_2', 640, 480, 30, 1000)],
    '240p_1':[('240p_1', 320, 240, 15, 200)],
    '180p_4':[ ('180p_4', 240, 180, 15, 120)],
    '120p_1':[('120p_1', 160, 120, 15, 65)]
}

@pytest.mark.parametrize("videoPerset,width,heigth,fps,bitrate", video_profile)
    @pytest.mark.functionality
    @pytest.mark.tags(case_tag.HIGH, case_tag.AUTOMATED)
    def test_cases(self,videoPerset,width,heigth,fps,bitrate):
        wy_primary = self.wayangWeb
        # Set videoProfile
        wy_primary.setVideoProfile(videoPerset,webAlocalStreamID)

更多用法可参考文档:https://www.cnblogs.com/yoyoketang/p/9492132.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值