Хорошо, я ненавижу "зачем тебе это делать?" отвечает так же, как и любой другой, но я собираюсь сделать один здесь. Надеюсь, ты не возражаешь.
Я бы сказал, что делать то, что вы хотите, не входит в сферу фреймворка. Нос предназначен для автоматизированных тестов. Если вам нужно передать аргументы командной строки для прохождения теста, то он не автоматизирован. Теперь то, что вы можете сделать, выглядит примерно так:
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
в производство.
UPDATE
Причина, по которой мне нужно это сделать,
потому что я тестирую несколько
реализации той же библиотеки.
Чтобы проверить эти реализации
правильно, я использую сценарий с одним носом
который принимает в качестве командной строки
аргумент библиотеки, что он должен
импорт для тестирования.
Похоже, вы можете попробовать свои силы в написании плагина для носа. Это довольно легко сделать. Вот последние документы.