我知道有一种方法可以在测试本身中通过args,就像这里显示的那样,但是有没有一种方法可以直接在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()
更新:或者我应该使用这个函数来初始化/配置contest .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
或者可能有更好的方法? 问题来源StackOverflow 地址:/questions/59386296/is-there-a-way-in-pytest-to-pass-command-line-arguments-to-conftest-py-directly
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
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- capability—> desired_capabilities (dest参数好像坏了,或者我漏掉了什么…)