gpt4 book ai didi

Django:在其他单元测试中重用单元测试

转载 作者:行者123 更新时间:2023-12-04 14:38:31 24 4
gpt4 key购买 nike

有两种型号:

class Model1(models.Model):
attribute = models.CharField(max_length=100)

class Model2(models.Model):
target = models.ForeignKey(Model1)

还有一个单元测试 tests.py :
class Model1Test(TestCase):
def test_make_new_model_and_save():
m = Model1()
m.attribute = 'test values'
m.save()

class Model2Test(TestCase):
def test_make_new_model_and_save():
# Make new Model1 to FK to
m = Model1()
m.attribute = 'test values'
m.save()

m2 = Model2()
m2.target = m
m2.save()

我只想调用在 Model1 的测试类中定义的 unittest 函数,而不是为了测试 Model2 而再次复制代码。我想像这样:
class Model1Test(TestCase):
def test_make_new_model_and_save():
m = Model1()
m.attribute = 'test values'
m.save()
return m

class Model2Test(TestCase):
def test_make_new_model_and_save():
# Make new Model1 to FK to
m = Model1Test('test_make_new_model_and_save')

m2 = Model2()
m2.target = m
m2.save()

但这似乎不起作用,我立即发现自己处于单元测试框架的内部。我找不到很多对这类事情的引用,所以作为单元测试的新手,我觉得我在某个地方走错了路。

是否有重用单元测试的“正常”方法,还是我的方法有缺陷?

最佳答案

这实际上只是一个关于 Python 中的对象和类的问题。答案是定义一个包含您想要的初始化代码的公共(public)父类(super class),从中继承 Model1Test 和 Model2Test,并从两者中调用它。

class CommonSetUp(TestCase):
def make_new_model_and_save():
m = Model1()
m.attribute = 'test values'
m.save()
return m

class Model2Test(CommonSetUp):
def test_make_new_model_and_save():
self.make_new_model_and_save()
self.assertTrue(...your assertions here...)

class Model2Test(CommonSetUp):
def test_make_new_model_and_save():
self.make_new_model_and_save()

m2 = Model2()
m2.target = m
m2.save()

self.assertTrue(...your assertions here...)

关于Django:在其他单元测试中重用单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com