将属性分配给其他测试将使用的tester类是一种好的做法吗

2024-06-09 08:05:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用pytest为我的python应用程序编写单元测试

我正在测试的模块有许多方法将被依次调用,它们的返回将被用作其他方法的参数。简言之,我拥有的是这样的东西:

def foo_1():
    #load file and do stuff
    return bar_1

def foo_2(arg1):
    #do stuff with arg1
    return bar_2

def foo_3(arg1, arg2):
    #do stuff with arg1 and arg2
    return bar_3

x = foo_1()
y = foo_2(x)
z = foo_3(x,y)

非常基本的东西,这是我正在进行的测试:

import foo_app

class TestClass:

    def test_foo_1(self):
        self.x = foo_app.foo_1()

        #never mind the assertions
        assert 0 == self.x

    def test_foo_2(self):
        self.y = foo_app.foo_2(self.x)

        #never mind the assertions
        assert 1 == self.y

    def test_foo_3(self):
        self.z = foo_app.foo_3(self.x, self.y)

        #never mind the assertions
        assert 3 == self.z

但是,我想知道这是否是单元测试的一个好实践,如果不是,那么处理这种依赖于以前方法的执行来实现结果的场景的最佳方法是什么


Tags: the方法testselfappreturnfoodef
1条回答
网友
1楼 · 发布于 2024-06-09 08:05:06

您可以使用yield实现所需的行为。可以用来维持执行顺序

def foo_1():
    #load file and do stuff
    return bar_1

def foo_2(arg1):
    #do stuff with arg1
    return bar_2

def foo_3(arg1, arg2):
    #do stuff with arg1 and arg2
    return bar_3
def run():
    arg1 = foo_1()
    yield
    arg2 = foo_2(arg1)
    yield
    arg3 = foo_3(arg1,arg2)
    yield

for steps in run():
    pass

查看这个资源,他详细解释了它的工作原理。
https://youtu.be/7lmCu8wz8ro?t=4635

相关问题 更多 >