我正在使用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
但是,我想知道这在单元测试中是否是一种好习惯,如果不是,那么依靠我以前方法的执行来实现结果的这种情况的最佳解决方法是什么?
答案 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