单元测试在这里工作是否有原因?

时间:2017-11-10 22:22:59

标签: python unit-testing testing

我不确定我是否遗漏了一些完全明显的东西,但每当我调用unittest.main()时,我的命令行输出都会读出:

Ran 0 tests in 0.000s

应该说我已经运行了两个测试,但是,给出了代码:

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()

以下是它正在测试的课程:

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)

我以前从来没有这样的问题,所以我不确定该怎么做。我正在学习Eric Matthes的2016年版Python's Crash Course中的Python,如果有任何参考的话。这个问题没有出现在我从中做过的其他课程中。

这是我尝试过的:

我已经尝试摆弄了give_raise(self,salary_raise = None)方法,并改变了如何工作,以防我在内部弄乱了一些内容,但我不明白为什么会影响测试。< / p>

我已经尝试删除它并再次重写它(因为它不是很多代码)希望我只是忘记了一些愚蠢的东西,但是如果我这样做的话我就忘了它了。

如果这是一个非常简单的修复,请提前道歉,如果我对这个问题进行格式化的方式有任何问题,或者如果这不是这样的问题的论坛,这是我第一次在这里发帖,这是道歉

3 个答案:

答案 0 :(得分:1)

测试方法需要以test_开头的名称才能找到它们。

调用您的测试test_give_default_raisetest_give_custom_raise

答案 1 :(得分:0)

EmployeeTest类(unittest.TestCase):,应该有test_方法来运行unittest模块。 所以试试这个:

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()

答案 2 :(得分:0)

更改方法名称,使其以测试方法的'test'为前缀,并且应该运行。