SarahMinich / tree_structure

0 stars 0 forks source link

Échec des tests #11

Closed laowantong closed 4 years ago

laowantong commented 4 years ago

Aucun des tests fournis ne passe, voici les sorties, avec des indications pour corriger.

test_type_page.py

(base) mm18ag:tree_structure aristide$ pytest test_type_page.py 
============================================================================================ test session starts =============================================================================================
platform darwin -- Python 3.7.4, pytest-5.3.1, py-1.8.0, pluggy-0.13.0
rootdir: /Users/aristide/Dropbox/git/tree_structure
plugins: arraydiff-0.3, remotedata-0.3.2, doctestplus-0.4.0, openfiles-0.4.0
collected 2 items                                                                                                                                                                                            

test_type_page.py F.                                                                                                                                                                                   [100%]

================================================================================================== FAILURES ==================================================================================================
___________________________________________________________________________________ tests_on_the_functions_for_the_counts ____________________________________________________________________________________

    def tests_on_the_functions_for_the_counts():
        p = Page()

        s1 = Symbol(1, 4)
        s2 = Symbol(2, 2)
        s3 = Symbol(3, 7)
        s4 = Symbol(4, 1)
        s5 = Symbol(5, 5)

        t1 = Tile({s1, s2})
        t2 = Tile({s2, s4})
        t3 = Tile({s3, s2, s1})
        t4 = Tile ({s3, s5})

        p.add_tile(t1)
        p.add_tile(t2)
        p.add_tile(t3)

        nb_symbols = p.symbol_count()
        nb_tiles = p.tile_count()

        print("The tiles on p :")
        for t in p.tiles:
>           print(t)

test_type_page.py:78: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[TypeError("'<' not supported between instances of 'Symbol' and 'Symbol'") raised in repr()] Tile object at 0x105c51650>

    def __str__(self):
>       return "[%s]" % ", ".join(map(str, sorted(self.symbols)))
E       TypeError: '<' not supported between instances of 'Symbol' and 'Symbol'

type_tile.py:14: TypeError
-------------------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------------------
The tiles on p :
======================================================================================== 1 failed, 1 passed in 0.04s =========================================================================================

Je pense que tu dois définir un prédicat __lt__(self, other) (less than) dans Symbol, car sinon selon quel critère les trier ?

test_type_problem-input.py

(base) mm18ag:tree_structure aristide$ pytest test_type_problem-input.py 
============================================================================================ test session starts =============================================================================================
platform darwin -- Python 3.7.4, pytest-5.3.1, py-1.8.0, pluggy-0.13.0
rootdir: /Users/aristide/Dropbox/git/tree_structure
plugins: arraydiff-0.3, remotedata-0.3.2, doctestplus-0.4.0, openfiles-0.4.0
collected 3 items                                                                                                                                                                                            

test_type_problem-input.py FFF                                                                                                                                                                         [100%]

================================================================================================== FAILURES ==================================================================================================
________________________________________________________________________________ test_of_the_creation_and_of_the_characterics ________________________________________________________________________________

    def test_of_the_creation_and_of_the_characterics():

        s1 = Symbol(1, 4)
        s2 = Symbol(2, 2)
        s3 = Symbol(3, 7)
        s4 = Symbol(4, 1)

        t1 = Tile({s1, s2})
        t2 = Tile({s2, s4})
        t3 = Tile({s3, s2, s1})

        my_input = ProblemInput({t1, t2, t3}, "input_test")
>       print(my_input)

test_type_problem-input.py:32: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
type_problem_input.py:67: in __str__
    return "{%s}" % ",".join(repr(tile) for tile in self)
type_problem_input.py:67: in <genexpr>
    return "{%s}" % ",".join(repr(tile) for tile in self)
type_tile.py:23: in __repr__
    return str(self)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[TypeError("'<' not supported between instances of 'Symbol' and 'Symbol'") raised in repr()] Tile object at 0x11311d050>

    def __str__(self):
>       return "[%s]" % ", ".join(map(str, sorted(self.symbols)))
E       TypeError: '<' not supported between instances of 'Symbol' and 'Symbol'

type_tile.py:14: TypeError
___________________________________________________________________________ test_of_the_creation_and_of_the_characterics_with_opt ____________________________________________________________________________

    def test_of_the_creation_and_of_the_characterics_with_opt():

        s1 = Symbol(1, 4)
        s2 = Symbol(2, 5)
        s3 = Symbol(3, 2)
        s4 = Symbol(4, 3)
        s5 = Symbol(5, 4)
        s6 = Symbol(6, 4)

        t1 = Tile({s1, s2})
        t2 = Tile({s2, s3})
        t3 = Tile({s4, s5})
        t4 = Tile({s5, s6})

>       C1 = t1.size() + t2.size() - s2.size
E       AttributeError: 'Tile' object has no attribute 'size'

test_type_problem-input.py:51: AttributeError
____________________________________________________________________________________________ test_of_json_writing ____________________________________________________________________________________________

    def test_of_json_writing():
        s1 = Symbol(1, 4)
        s2 = Symbol(2, 5)
        s3 = Symbol(3, 2)
        s4 = Symbol(4, 3)
        s5 = Symbol(5, 4)
        s6 = Symbol(6, 4)

        t1 = Tile({s1, s2})
        t2 = Tile({s2, s3})
        t3 = Tile({s4, s5})
        t4 = Tile({s5, s6})

>       C1 = t1.size() + t2.size() - s2.size
E       AttributeError: 'Tile' object has no attribute 'size'

test_type_problem-input.py:74: AttributeError
============================================================================================= 3 failed in 0.06s ==============================================================================================

Ici, même problème pour le premier test. Pour les deux suivants, c'est clair : tu dois ajouter un attribut size dans Tile.

test_type_symbol.py

(base) mm18ag:tree_structure aristide$ pytest test_type_symbol.py 
============================================================================================ test session starts =============================================================================================
platform darwin -- Python 3.7.4, pytest-5.3.1, py-1.8.0, pluggy-0.13.0
rootdir: /Users/aristide/Dropbox/git/tree_structure
plugins: arraydiff-0.3, remotedata-0.3.2, doctestplus-0.4.0, openfiles-0.4.0
collected 0 items                                                                                                                                                                                            

=========================================================================================== no tests ran in 0.01s ============================================================================================

Ici, pas d'échec, parce qu'aucun test n'est lancé. Pour qu'un test se lance, son nom doit commencer par test_. Vérifie cela également dans les autres fichiers, je ne sais pas combien de fonctions sont dans ce cas.

test_type_tile.py

(base) mm18ag:tree_structure aristide$ pytest test_type_tile.py 
============================================================================================ test session starts =============================================================================================
platform darwin -- Python 3.7.4, pytest-5.3.1, py-1.8.0, pluggy-0.13.0
rootdir: /Users/aristide/Dropbox/git/tree_structure
plugins: arraydiff-0.3, remotedata-0.3.2, doctestplus-0.4.0, openfiles-0.4.0
collected 1 item                                                                                                                                                                                             

test_type_tile.py F                                                                                                                                                                                    [100%]

================================================================================================== FAILURES ==================================================================================================
___________________________________________________________________________________ test_of_getting_the_leaf_out_of_a_tile ___________________________________________________________________________________

    def test_of_getting_the_leaf_out_of_a_tile():
>       my_input = tools.load_json_instance_from("C:\\Users\\sarah\\Documents\\These\\2,tree-merging,Cmax\\FPTAS_for_tree_Pagination\\Programmation\\Tests\\Inputs", "H3-nbT5-001")

test_type_tile.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

complete_path_to_input = 'C:\\Users\\sarah\\Documents\\These\\2,tree-merging,Cmax\\FPTAS_for_tree_Pagination\\Programmation\\Tests\\Inputs', input_name_without_extension = 'H3-nbT5-001'

    def load_json_instance_from(complete_path_to_input, input_name_without_extension):
        whereToLoad = os.path.join(complete_path_to_input, f"{input_name_without_extension}.json")
>       input_in_set = json.loads(open(whereToLoad).read())
E       FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\sarah\\Documents\\These\\2,tree-merging,Cmax\\FPTAS_for_tree_Pagination\\Programmation\\Tests\\Inputs/H3-nbT5-001.json'

tools.py:45: FileNotFoundError
============================================================================================= 1 failed in 0.04s ==============================================================================================

Fais une recherche/remplacement sur l'ensemble du projet pour passer les chemins relatifs en absolu.

Autres remarques

À première vue, la plupart des tests écrits semblent triviaux. Ce n'est pas totalement inutile de les écrire, par contre tu perds du temps en ajoutant des messages verbeux: c'est le framework de tests qui te dit, le cas échéant, ce qui s'est mal passé. Écrire un truc du genre:

assert t1 != t2, "It says that the two tiles are identical : problem"

... est une pure perte de temps.