- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
今天我一直在与 Nose 和固定装置作斗争,忍不住觉得自己做错了什么。
我将所有测试编写为函数,一切正常,但我想将它们移动到测试类,因为我认为它更整洁,然后可以继承测试。
我创建了一个到 testdb 的连接、要使用的事务以及所有测试的包级别的多个固定装置。应用程序中的存储库类使用此连接从数据库加载测试数据。
我尝试使用要测试的类作为属性来创建测试类。这是在测试类的 __init__ 函数中设置的。
我遇到的问题是我正在测试的类需要使用测试数据库中的数据进行实例化,但是 Nose 在运行包设置函数之前创建了测试类的实例。这意味着创建测试类并且测试失败时没有固定装置。
我可以让它工作的唯一方法是添加一个模块设置函数,该函数将我想要测试的类定义为全局,然后在测试方法中使用该全局,但这看起来很老套。谁能提出更好的方法吗?
这不是很清楚,所以这是我的测试模块的示例......
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)
如果您知道实现此目的的更好方法,请分享:)谢谢!
最佳答案
如果您正在朝着 unittest.TestCase 迈进基于类的测试,您也可以使用将在每个测试方法之前运行的 setUp()/tearDown()
方法,并使用 setUpClass()
来设置特定于类的内容, Nose 会像单元测试一样处理它,如下所示:
class TestMyClass(unittest.TestCase):
@classmethod
def setUpClass(cls):
db_data_repo = repositories.DBDataRepository()
db_data = db_data_repo.find(1)
cls.class_to_test = MyClass(db_data)
def test_result_should_be_an_float(self):
result = self.class_to_test.do_something()
assert isinstance(result, float)
关于python - 使用 Nose 和 Sqlalchemy 以及固定装置编写 Python 测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894006/
我在Trac / Bitten构建环境中的每个 checkin 中都有一些Selenium Webdriver GUI测试。由于种种愚蠢的原因,这些都是脆弱的,并且重新运行失败的测试总是可以的(除非它
我遇到了这个问题,这让我抓狂! 所以我正在开发我的第一个真正的 Google App Engine 应用程序,我总是喜欢在编写测试时发现新事物。 所以我有以下设置: 我有一个带有 nose、noseg
定义一个 Nose 测试方法test_circlearea_with_min_radius,它创建一个半径为0的圆c2并检查其计算面积是否与值0匹配 我已经编写了下面提到的代码,但仍然没有得到所需的输
它在文档中提到 ( http://nose.readthedocs.org/en/latest/api/core.html ) 但似乎没有任何示例,并且尝试它似乎在 cwd 中运行所有测试。 最佳答案
我正在尝试测试我的 django 项目,我有一个具有非常经典布局的应用程序,如下所示: project ├── __init__.py └── app ├── __init__.py
我正在编写一组测试用例,比如测试模块中的 Test1、Test2。 有没有办法使用命令 nose.main() 在该模块中跳过 Test1 或选择性地仅执行 Test2? 我的模块包含, 测试模块.p
我正在尝试实现一种完整而干净的测试 python 包的方法,一种适合以下要求的方法: 在干净的机器上执行测试而不设置它们 (virtualenv) 从 收集结果多平台 从 收集结果多个python解释
我刚刚开始进行测试开发,而且我正在努力理解要测试的内容。那里有很多 foobar 示例,但我很难知道如何测试我的项目单元。例如,使用这个简单地将文本文件的行作为列表返回的函数: def getLine
似乎是一个愚蠢的问题,但我一直无法弄清楚...... 我想使用 eclipse/pyunit 来运行我所有的测试。我已将测试运行器配置为 Nose 测试运行器。 现在我想让 pyunit 使用 Nos
是否有类似于 Nose 的 spec 的 py.test 插件(也是 pinocchio 的一部分)。我想看到测试运行器输出如下所示: Foobaz - behaves such and such
我已经安装了 django-nose 1.0 作为 Django 1.3.1 项目的测试运行器。我正在按照说明操作 on the pypi page关于仅测试模型。 这是我的 settings.py
如何为所有 Nose 测试用例创建一个仅在初始化期间调用一次的设置函数?我有一个只需要设置一次的全局配置,我觉得向每个模块添加以下内容(甚至为每个模块调用设置函数)有点多余: def setUp(se
我将 nose、django-nose、nose-exclude、coverage 添加到我的 buildout.cfg 中,并且跑了扩建。此外,我将 TEST_RUNNER 和 NOSE_ARGS
我正在为一个函数编写一个测试,该函数使用 Twisted 从 url 下载数据(我知道twisted.web.client.getPage,但是这个函数添加了一些额外的功能)。不管怎样,我想使用nos
我正在尝试使用nosetests 运行目录中的所有pyunit 测试。问题是我在这个目录中有 4 个测试,而 notests 只运行其中之一。如果我单独运行其他三个测试,例如: nosetests -
我有动态量的测试,所以我想使用 for 循环我会尝试这样的事情: from nose.tools import istest, nottest from nose.tools import eq_ i
我刚刚向我的一个 Python 模块添加了一个单元测试,但 nose 拒绝接收。测试看起来像这样: class TestMargin(unittest.TestCase): def setUp
当我运行 nosetests 时出现奇怪的错误: ====================================================================== ERRO
想象一下您有一个 BASE_CLASS 的情况。几个类继承自该类:CHILD_A、CHILD_B、CHILD_C。 现在让我们编写单元测试,但仅限于 CHILD_A、CHILD_B、CHILD_C。我
有没有办法在不运行它们的情况下获取 nose 当前识别的所有测试的列表? 根据文档--collect-only 启用collect-only:只收集和输出测试名称,不运行任何测试。 [COLLECT_
我是一名优秀的程序员,十分优秀!