Python unittest

0

Witam otóż na stronie repl.it mam do opisania parę zadań i zastanawiam się czy istnieje możliwość napisania testu jednostkowego, który będzie w stanie sprawdzić czy użytkownik napisał pewną część kodu. Chodzi o sprawdzenie inputu jaki użytkownik będzie miał za zadanie napisać.
Jeżeli ktoś posiada taką wiedzę lub materiały umożliwiające mi opanowanie tego, byłbym za nie bardzo wdzięczny ;)

0

UnitTest służy do sprawdzenia, czy funkcja zwraca oczekiwane wyniki. A nie do tego, czy kod został napisany tak jak to sobie założyliśmy.

Z tego co widziałem na filmiku, to w tym serwisie można tworzyć unit testy ;)

0

Już dziś poznaj unittest.mock: https://docs.python.org/3/library/unittest.mock.html

from unittest import mock

def test_input():
    with mock.patch('builtins.input', return_value='success'):
        assert input() == 'success'

Stosowanie patch jest OK, kiedy musisz napisać test do istniejącego kodu (czyt. za bardzo nie ma możliwości wstrzykiwania zależności).

W przeciwnym razie lepiej tworzyć własne klasy usług:

from unittest.mock import Mock

class UserInput:

    def get_text(prompt=''):
        return input(prompt)


class IncApp:

    def __init__(self, user_input):
        self.user_input = user_input

    def run(self):
        text = self.user_input.get_text()
        try:
            return int(text) + 1
        except ValueError:
            return None


def test_inc_2():
    user_input = Mock(UserInput)
    user_input.get_text = Mock(return_value='10')
    app = IncApp(user_input)
    assert app.run() == 11
0

Dobrze wiedzieć, ale wątpię aby autorowi tematu chodziło o użytkownika aplikacji napisanej przez użytkownika serwisu.

0

W temacie testów w Pythonie, czego używacie najchętniej i najczęściej?

PyTest ?
Unit test?
nose?
doctest?
Inne ?

Lista ( https://pythonhosted.org/testing/ */ https:*wiki.python.org/moin/PythonTestingToolsTaxonomy ) jest obszerna - ale co wybrać? Co polecacie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1