python - python 单元测试的基本测试用例类

标签 python unit-testing inheritance abstract-class

我有一堆“实现”相同“接口(interface)”的对象。他们都应该表现出一些共同的行为,因此我想在所有这些类(class)中进行测试。

我正在考虑拥有一个抽象的基本测试用例,其中包含一些通用的东西,然后由特定的测试用例派生出来。这个测试基类中至少有一个抽象方法是从基类本身调用的,需要在派生类中定义。不过,我不确定如何从基类调用派生类中定义的方法。如果我执行 self.abstract_method,它会说该方法未定义。如何调用此方法?

如果这里有一种不涉及继承的更好的方法来实现我的测试目标,我会很高兴听到它。

最佳答案

使用继承

import cPickle
import pickle
import unittest

class TestPickleBase:
    def test_dumps_loads(self):
        self.assertEqual(self.pickle_impl.loads(self.pickle_impl.dumps('a')), 'a')

class TestCPickle(unittest.TestCase, TestPickleBase):
    pickle_impl = cPickle

class TestPickle(unittest.TestCase, TestPickleBase):
    pickle_impl = pickle

if __name__ == '__main__':
    unittest.main()

使用pytest

import cPickle
import pickle

import pytest

@pytest.mark.parametrize('pickle_impl', [pickle, cPickle])
def test_dumps_loads(pickle_impl):
    assert pickle_impl.loads(pickle_impl.dumps('a')) == 'a'

import cPickle
import pickle

import pytest

@pytest.fixture(params=[pickle, cPickle])
def pickle_impl(request):
    return request.param

def test_dumps_loads(pickle_impl):
    assert pickle_impl.loads(pickle_impl.dumps('a')) == 'a'

关于python - python 单元测试的基本测试用例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18168616/

相关文章:

python - dlib 构建失败,无法导入 dlib

python - Clipspy:如何获取实例的槽字典

unit-testing - 测试有超时的 axios api 调用

c++ - C++菜单类系统结构:渲染顺序,可变类函数

python - 如何将正则表达式从 perl 转换为 python

python - 我在哪里可以找到执行 linux 任务的 python 教程

c# - 单元测试 SqlFunctions

unit-testing - Gradle中的Sonarqube任务不会产生测试覆盖率

python - 通过类层次结构合并字典类属性

c++ - 关于不同类型继承的思考