一、命令行传参
通过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)