Python - 使用 unittest 测试 class 方法

Python - Testing class methods with unittest

我有一个 Scheduler class 和一个使用 unittest

__generate_potential_weeks 编写的测试

main.py

class Scheduler:
    def __init__(self, num_teams, num_weeks):
        self.potential_weeks = self.__generate_potential_weeks(num_teams)
        # Other stuff

    def __generate_potential_weeks(self, num_teams):
        # Does some things

test_scheduler.py

import unittest
from main import Scheduler

class SchedulerTestCase(unittest.TestCase):
    def test_generate_weeks(self):
        sch = Scheduler(4, 14)
        weeks = sch.__generate_potential_weeks(4)

当我尝试测试 __generate_potential_weeks 时,出现以下错误

AttributeError: 'Scheduler' object has no attribute '_SchedulerTestCase__generate_potential_weeks'

问题

双下划线在python中有特殊含义。名称将被破坏以避免子类中的名称冲突。

如果这不是您的意图,我鼓励您用一个下划线标记它。如果是,您仍然可以使用损坏的名称访问该函数。我认为这对你有用:sch._Scheduler__generate_potential_weeks(4)