Pull to refresh

Comments 11

А можете поделиться своим опытом организации кода в своих проектах на Python-е по части тестов? Какая у Вас структура папок? Как организуете тест-пакеты? Оформляете ли тест-пакеты в виде полноценных пакетов, т.е. вместе с setup.py для каждого? И др. вопросы. Ведь каждый разработчик пробует разные подходы и какие-то отмирают, а какие-то выживают.
Я тесты пишу в файле tests.py в том же пакете, который тестируется. Если тестов много и их можно сгруппировать, то создаю пакет tests внутри тестируемого пакета, и уже в нём модули test_foo.py, test_bar.py и т.д. В общем я держу тесты ближе «к телу». Если где то можно обойтись маленьким doc-тестом внутри кода, то я так и делаю.
А Вы пробовали читать статью? В предисловии же написано, что автор читал статью от Yandex.
Лучший обзор Пайтеста, что приходилось видеть. Спасибо.
Для unittest используется вызов функции main. Поэтому запуск имеет вид «python unittest_example.py». При этом для запуска набора тестов приходится отдельно объединять их в TestSuit и запускать через него.


Нет, совсем не обязательно объединять.
Пример
[guest@localhost t]$ ls
test_file1.py  test_file2.py
[guest@localhost t]$ 
[guest@localhost t]$ cat test_file1.py 
#!/usr/bin/env python3

import unittest

class Test1(unittest.TestCase):

    def test_1(self):
        self.assertTrue(True)

if __name__ == '__main__':
    unittest.main()
[guest@localhost t]$ 
[guest@localhost t]$ python3 -m unittest -v
test_1 (test_file1.Test1) ... ok
test_2 (test_file2.Test2) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
[guest@localhost t]$


Она не только файлы обнаруживает и тесты в них, но и предоставляет механизм раскрытия директорий.
Читаю в который раз статью, как ту что от Yandex, так и эту. Но так и не нахожу ответа на вопрос:

Чем все-таки лучше pytest чем стандартный модуль unittest из стандартной библиотеки?

Если кол-вом кода, то многое решается путем написания снипетов к Вашей среде разработки или любимому редактору. Если же удобство запуска тестов, то есть общеизвестный nosetests, который более чем хорошо справляется с задачей запуска тестов.
Лучше ответить поздно, чем никогда )
Пайтест либче и легче в сопровождении. Фикстуры организуют код лучшим образом. Они разбивают огромный setUp() на независимые подсистемы. Это реально дает реюз кода в тестах.
def test_3_that_uses_all_fixtures(manually_session_resource, function_resource):
    print("test_2_that_does_not")


Думаю, здесь опечатка.
def test_strange_string_func_with_idfn(param_test_idfn):
    (input, expected_output) = param_test_idfn
    result = strange_string_func(input)
    print(f'input: {input}, output: {result} expected: {expected_output}')
    assert result == expected_output

В коде примера опечатка. Вместо param_test нужно использовать param_test_idfn.
Sign up to leave a comment.

Articles