nose替代方案:nose2中对应from nose.tools import *的等价导入
nose2中替代nose.tools断言导入的解决方案
由于nose2完全基于Python标准库的unittest生态,不再提供原nose中from nose.tools import *的批量断言导入方式,你可以通过以下两种方式解决:
方式一:改用unittest测试类风格(推荐)
将测试代码重构为继承unittest.TestCase的类,使用类中的断言方法(比如self.assertEqual),这是unittest生态的标准写法,兼容性更好:
import unittest from ex47.game import Room class TestRoom(unittest.TestCase): def test_room(self): gold = Room("GoldRoom", """This room has gold in it yo u can grab. There's a door to the north""") self.assertEqual(gold.name, "GoldRoom") self.assertEqual(gold.paths, {}) def test_room_paths(self): 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}) self.assertEqual(center.go("north"), north) self.assertEqual(center.go("south"), south) def test_map(self): start = Room("Start", "you can go west and down the 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}) self.assertEqual(start.go('west'), west) self.assertEqual(start.go('west').go('east'), start) self.assertEqual(start.go("down").go('up'), start)
方式二:保持函数式测试风格
如果不想修改测试结构,可直接从unittest导入断言函数,替换原代码中的assert_equal:
- 修改导入语句:
from unittest import assertEqual from ex47.game import Room
- 将代码中所有的
assert_equal替换为assertEqual(注意大小写,unittest采用驼峰命名)。
这样修改后,你的测试代码就能在nose2环境下正常运行。
内容的提问来源于stack exchange,提问作者user20495043
相关产品推荐
相关产品推荐

