我刚刚了解了python的描述符,我认为它们可能正好解决我遇到的问题。我想为我写的描述符类编写测试,我发现有一些示例代码,但我并不真正理解它。
import unittest
class MockClass(object):
# add any methods to assert access here
class DescriptorTests(unittest.TestCase):
def _make_one(self, *args, **kw):
from original_module import DescriptorClass
我想为子类编写测试,同时模仿Base,因为Base来自外部库。假设我们修改了基类中的所有可调用函数,我怎么能模拟它呢? class SubClass(Base):
def __init__(self, *args, **argv):
super().__init__(*args, **argv)
for attr_name in Base.__dict__:
attr = getattr(self, attr_name)
if callable(attr):
setatt
假设我们想为一个(简单的)数学库编写测试用例,这个库(目前)只实现两个例程sqrt和ln。除其他外,如果输入为负值,则这两个例程都会引发ValueError。所以,测试用例应该如下所示:
import unittest
from my_math_lib import sqrt, ln
class TestSqrt(unittest.TestCase):
def test_negatives(self):
self.assertRaises(ValueError, sqrt, -5)
# ... any many other cases
class Te
在我的应用程序中,我有三个接口ICapture<T>、IDecoder<T, K>和IBroadcaster<K>。
现在,我实现了一个从Capture<IntPtr>继承的Capture<IntPtr>类(IntPtr是类生成的原始数据)。当数据由VideoCapture的一个对象生成时,我首先要将其从T解码为K,然后广播它。
我想知道的是:你会怎么锁这个?只需编写一个方法,如
var data = videoCapture.GetData();
var decoded = decoder.Decode(data);
broadca
在我正在做的一些测试中,我正在模拟数据库。如何为整个类创建一个安装方法,以便它每次在类中运行单个测试时都会运行?
我想要做的事情的例子。
from mocks import MockDB
class DBTests(unittest.TestCase):
def setup(self):
self.mock_db = MockDB()
def test_one(self):
#deal with self.mock_db
def test_two(self):
#deal with self.mock_db, as
我对单元测试非常陌生,我正在尝试着去体验一下这件事的最佳实践。我在这里看到了几个与单元测试继承基类有关的问题,这个基类本身包含多个测试,例如:
class TestBase(unittest.TestCase):
# some standard tests
class AnotherTest(TestBase):
# run some more tests in addition to the standard tests
我想我从社区收集到的是,为每个实现编写单独的测试并使用是一个更好的主意。但是,如果这个基类实际上不包含任何测试--只是为所有其他测试提供帮助-怎么办?例如
我想测试函数is_myclass。请帮助我理解如何写一个成功的测试。
def is_myclass(obj):
"""This absurd stub is a simplified version of the production code."""
isinstance(obj, MyClass)
MyClass()
Docs
用于unittest.mock的Python演示了解决isinstance问题的三种方法:
将spec参数设置为实类。
将真实的类分配给__class__属性。
在实际类的修补程序中
给定测试套件:
class MyTestSuite(unittest.TestCase):
def test_foo(self):
self.assertLessEqual(temperature, boiling, "boiling will burn the cake")
self.assertEqual(colour, 'golden brown', "the cake should be cooked until golden brown")
def test_bar(self):
我正在尝试理解Python的模块中的unittest。为了加快测试速度,我想在每个类中创建一个“昂贵的”连接对象一次。一开始我想这样做:
import unittest
import rethinkdb as r
class TestRethink(unittest.TestCase):
conn = r.connect('localhost', 28016)
def test_table_list(self):
r.table_list().run(self.conn)
if __name__ == "__main__":
特别是在单元测试中,我们使用这种“设计模式”,我称之为“从类级别获取类”。
framworktest.py:
class FrameWorkHttpClient(object):
....
class FrameWorkTestCase(unittest.TestCase):
# Subclass can control the class which gets used in get_response()
HttpClient=FrameWorkHttpClient
def get_response(self, url):
clien
这里有许多类似的(Ish)问题,您应该如何在Python中修补类的超类以进行测试。我已经从他们那里收集到了一些想法,但我仍然没有到我需要的地方。
假设我有两个基类:
class Foo(object):
def something(self, a):
return a + 1
class Bar(object):
def mixin(self):
print("Hello!")
现在,我将要测试的类定义为这样:
class Quux(Foo, Bar):
def something(self, a):
s