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

时间:2019-01-12 00:26:22

标签: python unit-testing testing pytest

我正在使用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

但是,我想知道这在单元测试中是否是一种好习惯,如果不是,那么依靠我以前方法的执行来实现结果的这种情况的最佳解决方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用yield达到所需的行为。可以用来维护执行顺序。

static void alarmTest() {
  print("test");
}

void runAlarm() {
  AndroidAlarmManager.oneShot(
    Duration(seconds: 10),
    0,
    alarmTest,
    wakeup: true,
  ).then((val) => print(val));
}

请查阅此资源,他在其中详细解释了其工作原理。
https://youtu.be/7lmCu8wz8ro?t=4635