2013-07-22 25 views
7

Python Sert Tanıyalım takip ediyorum tanımlı değil ve ben Egzersiz 47 kulüpler - Otomatik Test (http://learnpythonthehardway.org/book/ex47.html)Python NameError: Küresel adı 'assertEqual'

I (Python3 kullanıyorum, kitabın kullanımı vs Python 2.x) ve assert_equals (kitapta kullanılan) kullanımdan kaldırıldığının farkındayım. Ben assertEqual kullanıyorum.

Ben bir test dava oluşturmaya çalışıyorum ama cmd nosetests kullanırken nedense ben hata alıyorum :

from nose.tools import * 
from ex47.game import Room 



def test_room(): 
    gold = Room("GoldRoom", 
     """ This room has gold in it you can grab. There's a 
      door to the north. """) 
    assertEqual(gold.name, "GoldRoom") 
    assertEqual(gold.paths, {}) 

def test_room_paths(): 
    center = Room("Center", "Test room in the center.") 
    north = Room("North", "Test room in the north.") 
    south = Room("South", "Test room in the south.") 

    center.add_paths({'north': north, 'south': south}) 
    assertEqual(center.go('north'), north) 
    assertEqual(center.go('south'), south) 

def test_map(): 
    start = Room("Start", "You can go west and down a hole") 
    west = Room("Trees", "There are trees here. You can go east.") 
    down = Room("Dungeon", "It's dark down here. You can go up.") 

    start.add_paths({'west': west, 'down': down}) 
    west.add_paths({'east': start}) 
    down.add_paths({'up': start}) 

    assertEqual(start.go('west'), west) 
    assertEqual(start.go('west').go('east'), start) 
    assertEqual(start.go('down').go('up'), start) 

ben arama denedim: Burada NameError: global name 'assertEqual' is not defined

kodudur Herhangi bir çözüm için GitHub ve neden bana NameError'u verdiğinden emin değilim ve bunu düzeltmek için nasıl giderim.

+12

değil midir 'assertEqual' bölüm? burun hala "assert_equal" kullanır. – Blender

+1

Vay, haklısın. Ben sadece 'assertEqual' ifadesini belirttiğiniz gibi assert_equal olarak değiştirdim ve kusursuz çalışıyor. Teşekkür ederim! – auro

cevap

3

assertEqual, unittest.TestCase sınıfının bir yöntemidir, bu nedenle onu yalnızca o sınıftan gelen nesnelerde kullanabilirsiniz. the unittest documentation'u kontrol edin.

+1

Örnek, burun değil, birim testi kullanır. – Fredrik

+0

Tam olarak NameError neden. nose.tools hiçbir assertEqual işlevi var – Joop

+5

Elbette, bir kitap için dokümanlar için işaret ediyor yerine kullanarak o değil kullanmak için kütüphane dokümanlar için işaret yerine kullanmak yerine bir şekilde geri ... – Fredrik

1

Bir python selenium test komut dosyasındaki ikinci modülle benzer bir sorunla karşılaştım. 'Kendini' içererek çözüldü. 'assertIn' önce.

önce:

assertIn('images/checkbox-checked.png', ET) 

sonra: unittest ait

self.assertIn('images/checkbox-checked.png', webelement)