2017-11-10 10 views
1

ich nicht sicher bin, ob ich etwas ganz offensichtlich fehlt, aber jedes Mal, wenn ich rufe unittest.main() liest meine Kommandozeilen-Ausgabe aus:Gibt es einen Grund, warum unitest hier nicht funktioniert?

Ran 0 tests in 0.000s 

Es sollte sagen, dass ich zwei Tests ausgeführt haben aber angesichts der Code hier:

import unittest 
from Chap11Lesson2 import Employee 

    class EmployeeTest(unittest.TestCase): 

    def setUp(self): 
     """Setting up a variable for use in the test methods""" 
     self.employee1 = Employee("Lucas", "Grillos", 20000) 

    def give_default_raise(self): 
     """Testing to see if 5000 is added properly""" 
     money = 25000 
     self.employee1.give_raise() 
     self.assertEqual(self.employee1.salary, money) 

    def give_custom_raise(self): 
     """Testing to see if 10000 is raised properly""" 
     money = 35000 
     self.employee1.give_raise(10000) 
     self.assertEqual(self.employee1.salary, money) 

unittest.main() 

hier ist die Klasse, die es Tests von:

class Employee(): 

    def __init__(self, first_name, last_name, salary): 
     self.first_name = first_name 
     self.last_name = last_name 
     self.salary = salary 

    def give_raise(self, salary_raise = None): 
     if salary_raise: 
      self.salary = self.salary + salary_raise 
     else: 
      self.salary = self.salary + 5000 

    def print_salary(self): 
     print(self.salary) 

ich habe noch nie ein Problem wie dieses hatte, so bin ich nicht sicher, was zu tun ist. Ich lerne Python von Eric Matthes 'Python Crash Course, der 2016er Ausgabe, wenn das irgendeine Referenz ist. Dieses Problem ist in den anderen Lektionen, die ich daraus gemacht habe, nicht aufgetaucht.

Hier ist, was ich versucht habe:

Ich habe versucht, um mit dem give_raise (self, salary_raise = None) Methode Hantieren und Ändern auf, wie das in dem Fall habe ich etwas nach oben innen dort versaut hatte, aber ich Ich verstehe nicht, warum das die Tests beeinflussen würde.

Ich habe versucht, es zu löschen und es noch einmal umzuschreiben (da es nicht viel Code ist) in der Hoffnung, dass ich gerade etwas Dummes vergessen habe, aber wenn ich es getan habe, dann habe ich es ein zweites Mal vergessen.

Entschuldigung im Voraus, wenn es eine sehr einfache Lösung ist, und Entschuldigung, wenn etwas mit der Art, wie ich diese Frage formatiert habe, nicht stimmt, oder wenn dies kein Forum für Fragen wie diese ist - dies ist mein erster Beitrag Hier.

+0

Ich entschuldige mich, dass ich meinen Funktionen keine Docstrings hinzugefügt habe, um zu erklären, was sie tun. – LGrillos

+0

Setzen Sie Ihre Testmethoden mit "Test" voran, damit sie ausgeführt werden. –

Antwort

1

Testmethoden müssen Namen haben, die mit test_ beginnen, damit der Unittest-Runner sie findet.

Rufen Sie Ihre Tests test_give_default_raise und test_give_custom_raise.

+0

Ich wusste, es wäre etwas Dummes, das ich vergessen habe ... Vielen Dank für Ihre Hilfe auf jeden Fall, Daniel. – LGrillos

0

Die Klasse EmployeeTest (unittest.TestCase) :, sollte test_-Methoden haben, um das unittest-Modul auszuführen. dies so versuchen:

import unittest 
from Chap11Lesson2 import Employee 

class EmployeeTest(unittest.TestCase): 
    def setUp(self): 
     """Setting up a variable for use in the test methods""" 
     self.employee1 = Employee("Lucas", "Grillos", 20000) 

    def test_give_default_raise(self): 
     """Testing to see if 5000 is added properly""" 
     money = 25000 
     self.employee1.give_raise() 
     self.assertEqual(self.employee1.salary, money) 

    def test_give_custom_raise(self): 
    """Testing to see if 10000 is raised properly""" 
     money = 35000 
     self.employee1.give_raise(10000) 
     self.assertEqual(self.employee1.salary, money) 

unittest.main() 
0

Ihre Methodennamen ändern, so dass sie mit ‚test‘ vorangestellt sind für die Testmethoden und es sollte laufen.

Verwandte Themen