WebRequest - это абстрактный класс, который не имеет свойства CookieContainer. Кроме того, вы не можете использовать коллекцию заголовков (исключение не реализовано), поэтому любая попытка, например webRequest.Headers.Add («Cookie», «...»), не будет выполнена.
Извините, но у вас есть нет возможности использовать файлы cookie с помощью WebRequest.
Придерживайтесь HttpWebRequest и добавляйте / редактируйте столько куки, которые вам нравятся, используя коллекцию Headers!
Если они все начинают test
затем всего nosetest
, должен работать. Нос автоматически ищет любые файлы, начинающиеся с 'теста'.
Разделяете ли Вы или смешиваете тесты, и модули, вероятно, вопрос вкуса, хотя я сильно защитил бы для того, чтобы держать их отдельно (причины установки, статистика кода и т.д.).
при использовании nosetests удостоверьтесь, что все каталоги с тестами являются реальными пакетами:
src/
module1.py
module2.py
subpackage1/
__init__.py
moduleA.py
moduleB.py
tests/
__init__.py
test_module1.py
test_module2.py
subpackage1/
__init__.py
test_moduleA.py
test_moduleB.py
Таким образом, можно просто работать nosetests
в каталоге верхнего уровня, и все тесты будут найдены. Необходимо удостовериться, что src/
находится на эти PYTHONPATH
, однако, иначе все тесты перестанут работать из-за пропавших без вести импорта.
Я не знаю о nosetests, но можно достигнуть этого со стандартом unittest модуль. Просто необходимо создать test_all.py
файл под корневым каталогом, затем импортировать все тестовые модули. В Вашем случае:
import unittest
import test_module1
import test_module2
import subpackage1
if __name__ == "__main__":
allsuites = unittest.TestSuite([test_module1.suite(), \
test_module2.suite(), \
subpackage1.test_moduleA.suite(), \
subpackage1.test_moduleB.suite()])
каждый модуль должен обеспечить следующую функцию (пример с модулем с двумя модульными тестами: Class1
и Class2
):
def suite():
""" This defines all the tests of a module"""
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Class1))
suite.addTest(unittest.makeSuite(Class2))
return suite
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
Это - вероятно, горячо оспариваемая тема, но я предложил бы, чтобы Вы разделили свои тесты из Ваших модулей. Настройте что-то вроде этого...
Использование setup.py
для установки их в системный путь (или Вы можете изменять переменные среды для предотвращения потребности в шаге "установки").
foo/
module1.py
module2.py
subpackage1/
__init__.py
moduleA.py
moduleB.py
Теперь любой сценарий Python где угодно может получить доступ к тем модулям, вместо в зависимости от нахождения их в локальном каталоге. Поместите свои тесты все прочь стороне как это:
tests/
test_module1.py
test_module2.py
test_subpackage1_moduleA,py
test_subpackage2_moduleB.py
я не уверен в Вашем nosetests
команда, но теперь, когда Ваши тесты - все в том же каталоге, становится намного легче записать сценарий обертки, который просто импортирует все другие тесты в том же каталоге. Или если это не возможно, можно, по крайней мере, сойти с рук простое bash
цикл, который получает тестовые файлы один за другим:
#!/bin/bash
cd tests/
for TEST_SCRIPT in test_*.py ; do
nosetests -m $TEST_SCRIPT
done
Я дам ответ Testoob.
Запускающие тесты в единственном файле похож на Нос:
testoob test_foo.py
Для запущения тестов во многих файлах можно создать комплекты с коллекторами Testoob (в каждом подпакете)
# src/subpackage?/__init__.py
def suite():
import testoob
return testoob.collecting.collect_from_files("test_*.py")
, и
# src/alltests.py
test_modules = [
'subpackage1.suite',
'subpackage2.suite',
]
def suite():
import unittest
return unittest.TestLoader().loadTestsFromNames(test_modules)
if __name__ == "__main__":
import testoob
testoob.main(defaultTest="suite")
я не попробовал определенный сценарий.