Как организовать тест Python способом, что я могу запустить все тесты в единственной команде?

WebRequest - это абстрактный класс, который не имеет свойства CookieContainer. Кроме того, вы не можете использовать коллекцию заголовков (исключение не реализовано), поэтому любая попытка, например webRequest.Headers.Add («Cookie», «...»), не будет выполнена.

Извините, но у вас есть нет возможности использовать файлы cookie с помощью WebRequest.

Придерживайтесь HttpWebRequest и добавляйте / редактируйте столько куки, которые вам нравятся, используя коллекцию Headers!

14
задан Andrea Francia 14 December 2008 в 17:43
поделиться

5 ответов

Если они все начинают test затем всего nosetest, должен работать. Нос автоматически ищет любые файлы, начинающиеся с 'теста'.

8
ответ дан 1 December 2019 в 02:47
поделиться

Разделяете ли Вы или смешиваете тесты, и модули, вероятно, вопрос вкуса, хотя я сильно защитил бы для того, чтобы держать их отдельно (причины установки, статистика кода и т.д.).

при использовании 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, однако, иначе все тесты перестанут работать из-за пропавших без вести импорта.

12
ответ дан 1 December 2019 в 02:47
поделиться

Я не знаю о 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())
4
ответ дан 1 December 2019 в 02:47
поделиться

Это - вероятно, горячо оспариваемая тема, но я предложил бы, чтобы Вы разделили свои тесты из Ваших модулей. Настройте что-то вроде этого...

Использование 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
2
ответ дан 1 December 2019 в 02:47
поделиться

Я дам ответ 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")

я не попробовал определенный сценарий.

0
ответ дан 1 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

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