Python NameError中的单元测试结果

Python NameError中的单元测试结果,python,unit-testing,Python,Unit Testing,我得到三个NameErrors:NameError:name'bj'未定义 pl也是如此 看起来我犯了语法错误,但我不确定在哪里。首先,我缺少参数,所以我创建了21点和播放器的实例,现在它似乎无法识别我创建的实例 您是从绑定方法调用它们,因此将它们作为实例/类变量访问,或者换句话说,使用self import unittest from blackjack import Blackjack from blackjack import Player class TestCardGame(uni

我得到三个NameErrors:NameError:name'bj'未定义 pl也是如此


看起来我犯了语法错误,但我不确定在哪里。首先,我缺少参数,所以我创建了21点和播放器的实例,现在它似乎无法识别我创建的实例

您是从绑定方法调用它们,因此将它们作为实例/类变量访问,或者换句话说,使用
self

import unittest
from blackjack import Blackjack
from blackjack import Player


class TestCardGame(unittest.TestCase):
    bj = Blackjack(4)

    def test_choose_card(self):
        self.assertEqual(bj.choose_card(['A',1],0),'A')
        self.assertEqual(bj.choose_card(['A', 1], 1), 1)

    def test_return_card_val(self):
        self.assertEqual(bj.return_card_val(['A',1],'A'),11)
        self.assertEqual(bj.return_card_val(['A',1], 1), 1)

class TestPlayer(unittest.TestCase):
    pl = Player('Apple')

    def test_add_score(self):
        self.assertEqual(pl.add_score('A'), 11)

if __name__ == '__main__':
    unittest.main()

这不是语法错误,而是逻辑错误。下面提供的修复程序是一个答案。如果您出现语法错误,它会说
SyntaxError
。它说的是
namererror
,因为您正在犯一个名称错误:也就是说,试图在不在范围内的地方使用名称
bj
import unittest
from blackjack import Blackjack
from blackjack import Player


class TestCardGame(unittest.TestCase):
    bj = Blackjack(4)

    def test_choose_card(self):
        self.assertEqual(self.bj.choose_card(['A',1],0),'A')
        self.assertEqual(self.bj.choose_card(['A', 1], 1), 1)

    def test_return_card_val(self):
        self.assertEqual(self.bj.return_card_val(['A',1],'A'),11)
        self.assertEqual(self.bj.return_card_val(['A',1], 1), 1)

class TestPlayer(unittest.TestCase):
    pl = Player('Apple')

    def test_add_score(self):
        self.assertEqual(self.pl.add_score('A'), 11)

if __name__ == '__main__':
    unittest.main()