【发布时间】:2014-09-17 14:58:21
【问题描述】:
我今天一直在用鼻子和固定装置打架,不禁觉得我做错了什么。
我将所有测试都写成函数,一切正常,但我想将它们移动到测试类,因为我认为它更整洁,然后可以继承测试。
我创建了一个与 testdb 的连接、要使用的事务以及用于所有测试的包级别的一些固定装置。应用程序中的存储库类使用此连接从数据库加载测试数据。
我尝试使用他们要测试的类作为属性来创建我的测试类。这是在测试类的__init__ 函数中设置的。
我遇到的问题是我正在测试的类需要使用我的测试数据库中的数据进行实例化,但是 Nose 在运行包设置函数之前创建了一个测试类的实例。这意味着在创建测试类并且测试失败时没有固定装置。
我可以让它工作的唯一方法是添加一个模块设置函数,该函数将我要测试的类定义为全局,然后在测试方法中使用该全局,但这似乎很hacky。任何人都可以提出更好的方法吗?
这不是很清楚,所以这里是我的测试模块的一个例子......
from nose.tools import *
from myproject import repositories
from myproject import MyClass
def setup():
global class_to_test
db_data_repo = repositories.DBDataRepository()
db_data = db_data_repo.find(1)
class_to_test = MyClass(db_data)
class TestMyClass(object):
def test_result_should_be_an_float(self):
result = class_to_test.do_something()
assert isinstance(result, float)
如果您知道实现此目的的更好方法,请分享:) 谢谢!
【问题讨论】:
标签: python unit-testing fixtures nose