Сценарий тестирования носа с параметрами командной строки

Для решения серверной стороны (который Ваш вопрос был первоначально неоднозначен о), эта страница в солнце списки один способ определить JRE. А именно,


  

атрибут classid определяет который версия Плагина Java использовать.

следующее является альтернативной формой атрибута classid:

classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA"

В этой форме, "xxxx", "yyyy", и "zzzz" являются четырехзначными числами, которые определяют определенную версию Плагина Java, который будет использоваться.

, Например, для использования версии 1.5.0 Плагина Java Вы определяете:

classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA"

15
задан dzhelil 2 November 2009 в 10:41
поделиться

3 ответа

Хорошо, я ненавижу "зачем тебе это делать?" отвечает столько же, сколько и кто-либо, но я собираюсь дать один здесь. Надеюсь, вы не возражаете.

Я бы сказал, что делать все, что вы хотите, не входит в рамки носа фреймворка. Нос предназначен для автоматизированных тестов. Если вам нужно передать аргументы командной строки для прохождения теста, то он не автоматизирован. Теперь то, что вы можете сделать, выглядит примерно так:

import sys

class test_something(object):
    def setUp(self):
        sys.argv[1] = 'arg'
        del sys.argv[2] # remember that -s is in sys.argv[2], see below
    def test_method(self):
        print sys.argv

Если вы запустите это, вы получите следующий результат:

[~] nosetests test_something.py -s
['/usr/local/bin/nosetests', 'arg']
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

(Не забудьте передать флаг -s, если вы хотите увидеть, что происходит stdout)

Однако я ' Я, вероятно, по-прежнему рекомендую этого не делать, так как вообще плохая идея возиться с глобальным состоянием в автоматических тестах, если можно этого избежать. Скорее всего, я бы адаптировал любой код, который я хочу протестировать, чтобы он принимал список argv . Затем вы можете передать все, что захотите во время тестирования, и передать sys.argv в производство.

ОБНОВЛЕНИЕ :

Причина, по которой мне нужно это сделать, - потому что я тестирую несколько реализации той же библиотеки. Чтобы проверить эти реализации правильно, я использую скрипт с одним носом, который принимает в качестве командной строки аргументировать библиотеку, что она должна импорт для тестирования.

Похоже, вы можете попробовать свои силы в написании плагина для носа. Сделать это довольно просто. Вот последние документы.

17
ответ дан 1 December 2019 в 00:59
поделиться

Просто насморк и передача параметров не сработает, поскольку нос будет пытаться интерпретировать аргументы как параметры носа, так что вы получите проблемы, которые видите.

Я не думаю, что параметр поддержки носа пока не проходит напрямую, но этот плагин носа нос-testconfig позволяет вам писать тесты, как показано ниже:

from testconfig import config
def test_os_specific_code():
    os_name = config['os']['type']
    if os_name == 'nt':
        pass # some nt specific tests
    else:
        pass # tests for any other os
2
ответ дан 1 December 2019 в 00:59
поделиться

На данный момент я использую следующий прием:

args = sys.argv[1:]
sys.argv = sys.argv[0:1]

, который просто считывает аргумент в локальную переменную, а затем удаляет все дополнительные аргументы в sys.argv , чтобы они не запутали нос.

3
ответ дан 1 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: