繁体   English   中英

PyTest 中有没有办法将命令行参数直接传递给 conftest.py?

[英]Is there a way in PyTest to pass command line arguments to conftest.py directly?

我知道有一种方法可以像这里显示的那样在测试本身中传递 args ,但是有没有办法直接传递 conftest.py ? 我想以这种方式为所有测试配置一些常见的东西。 这是我的 conftest.py:

 import pytest
 from appium import webdriver
 import json
 import os

 from config import *

 CAPS_FILE = "android_9.0_emulator.json"


 def pytest_addoption(parser):
     parser.addoption("--desired-capabilities", action="store", default=CAPS_FILE)


 def pytest_generate_tests(metafunc):
     # This is called for every test. Only get/set command line arguments
     # if the argument is specified in the list of test "fixturenames".
     option_value = metafunc.config.option.name
     if 'desired-capabilities' in metafunc.fixturenames and option_value is not None:
         # metafunc.parametrize("desired_capabilities", [option_value])
         CAPS_FILE = option_value


 def get_desired_caps(json_file):
     with open(desired_caps_dir_path) as json_file:
         return json.load(json_file)


 @pytest.fixture(scope="session")
 def browser():
     driver = webdriver.Remote(appium_driver_url, desired_capabilities=get_desired_caps(CAPS_FILE))
     # driver = webdriver.Remote(appium_driver_url, desired_capabilities=get_desired_caps(metafunc.config.option))
     yield driver
     driver.quit()

更新:或者我应该使用这个函数从命令行初始化/配置 conftest.py 本身:

def pytest_configure(config):
     option_val = config.option.name
     if 'desired-capabilities' in config.option and option_val is not None:
         CAPS_FILE = option_val

或者也许有更好的方法?

 def pytest_addoption(parser):
     desired_caps = None
     parser.addoption("--desired-capabilities", dest=desired_caps, action="store", default=CAPS_FILE)


 def pytest_configure(config):
     option_val = config.option.desired_capabilities
     if 'desired_capabilities' in config.option and option_val is not None:
         CAPS_FILE = option_val

注意:--desired-capabilities -->desired_capabilities( dest参数似乎坏了或者我遗漏了一些东西......)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM